1

在 ubuntu 和 chromium 浏览器上测试我的应用程序时,一切正常,但是当移动到使用 debian 和相同 chromium 浏览器的生产机器时,我总是得到一个 ajax 错误 0。

  • jQuery 版本 1.7.2
  • jQuery.mobile 版本 1.1.1
  • Tomcat服务器

要求:

$.ajax({
    type: 'POST',
    url: "http://localhost:8080/rest/setvalue/1234",
    dataType: "json",
    success: function(objResponse) {
        showMessage("Done");
    },
    error: errorHandler
});

尽管服务器正确处理了请求,但在生产机器上调用了 errorHandler!

感谢您的任何想法...

坦率

- - - 添加 - - -

显示代码的警报

function errorHandler(xhr, ajaxOptions, thrownError) {
showAlert("Error", "Error: " + xhr.status + "\n" +
       "Message: " + xhr.statusText + "\n" +
       "Response: " + xhr.responseText + "\n" + thrownError); } 

是:

错误:0

消息:错误

回复:

4

1 回答 1

1

成功函数中缺少括号。

showMessage("Done"; 应该是 showMessage("Done");

你能检查一下这是否解决了问题?

编辑:

我的观点是问题与代码无关。在您的情况下,AJAX 请求很可能被视为跨域请求并且同源策略失败。这就是为什么你得到错误:0。

我设法重现了这个案例(在 Windows 操作系统中),并且在以下情况下我得到了同样的错误:

  1. 打开我的网页http://localhost:7001/MobileApp/index.html并在http://www.example.com/MobileApp/test.
  2. 打开我的网页http://localhost:7001/MobileApp/index.html并在http://127.0.0.1:7001/MobileApp/test.
  3. 打开我的网页http://127.0.0.1:7001/MobileApp/index.html并执行 AJAXhttp://localhost:7001/MobileApp/test
  4. 打开我的网页http://192.168.1.2:7001/MobileApp/index.html(其中 192.168.1.2 是我的私有 IP 地址)并在http://127.0.0.1:7001/MobileApp/test.

上述情况被认为是跨域请求,我得到了你提到的错误。

显然,在配置了我的主机文件并将 IP 地址映射到主机名等之后,上述一些问题得到了解决,因为这些请求不被视为跨域。

总之,我建议调查同源策略是否成功。

在此处输入图像描述

于 2012-08-24T07:37:23.920 回答