jQuery Ajax POST不成功

我无法使用jquery的ajaxfunction成功发布。

运行页面的URL为http://localhost:9999 ,目标(Web服务)的URL为http://localhost:8080 。 没有端口不相同,它们分别是9999和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请求。 我昨晚在这里发布了同样事情。

WCF Ajax调用无法使用Jquery $ .ajax

我在localhost:23485上进行了一个$ .ajax调用,调用了IIS中托管的http:// localhost上的一个Web服务。 因为它们是不同的域,所以跨域开始并使事情变得困难。

在您调用ajax的同一域上创建代理,例如在PHP中:

  

拨打你的ajax电话:

 $.ajax({ url: "get.php?Url=realurl.com" }); 

这是一个解决方法。

调用什么处理程序? successerror处理程序? 你能详细说明“不起作用”是什么意思吗?

您可能希望在error处理程序中提供更多信息,例如:

 error: function(XMLHttpRequest, textStatus, errorThrown) { //console.log is better at least for debugging. You can change this back to alert //when your code goes into production console.log("Update unsuccessful. Status: ", textStatus, " error thrown: ", errorThrown); } 

textStatus应该可以让您了解问题所在。 可能的值是“timeout”,“error”,“notmodified”和“parsererror”。 一旦找出实际错误,请更新问题。

此外,如果您有Firebug,请检查“网络”选项卡以查看请求和响应。 一些常见的错误来源:

  • 违反同源政策。 您不能将AJAX设置为与父页面不同的URL。
  • 服务器端错误。 如果您的服务器返回类似500响应代码的内容,则请求将失败。
  • 解析错误。 如果您期望使用特定的响应格式(如jsonxml ,并且响应不是该格式,则AJAX请求将失败。