我无法使用jquery的ajax功能成功发布。
运行页面的http://localhost:9999URL为,目标(Web服务)的URL为http://localhost:8080。没有端口是不一样的,它们分别是9999和8080。
http://localhost:9999
http://localhost:8080
下面是请求和jquery ajax代码。
请求:
OPTIONS /profile/set_member HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Origin: http://localhost:9999 Access-Control-Request-Method: POST
jQuery ajax代码:
$.ajax({ type: "POST", url: "http://localhost:8080/profile/set_member", contentType: "application/json", data: member, error: function(){ alert('Update failed!'); }, processData: false, success: function(){ alert('Update successful!'); } });
这是跨域ajax调用的问题。基本上(至少在Firefox中),出于安全原因,POST请求会转换为OPTIONS请求。我昨晚碰到了同样 _的_事情,发布在这里。
我在localhost:23485上进行了$ .ajax调用,调用了IIS托管的http:// localhost上的Web服务。因为它们是不同的域,所以跨域介入了,使事情变得困难。