0

以下代码在 Safari 和 Chrome 中的 iPad 和 iPhone (4,5) 中运行良好。相反,ajax 调用在 Android 设备和桌面浏览器中不起作用(直接运行到 onError 函数)。

当我将绝对 URL 交换为相对 URL 时,这两组的成功/失败结果是相反的。

如何解决这个问题(我正在运行 jquerymobile 1.3.0 beta)?谢谢/布鲁斯

$(document).ready(function() {
$("#submit").click(function(){
  var formData = $("#loginf").serialize();
  $.ajax({
    type: "POST",
    url: "http://mydomain.org/m2/scripts/site/bpg_process.asp?id=lg",
    cache: false,
    data: formData,
    dataType: 'json',
    success: onSuccess,
    error: onError
  });
  return false;
});
});
4

2 回答 2

0

你知道不允许跨域 Ajax 调用吗?您的问题可能与您发出请求的 URL有关,而不是与您正在测试的浏览器有关。阅读此内容了解更多详细信息:http ://en.wikipedia.org/wiki/Same_origin_policy

对您来说重要的是该策略排除了不同的子域。前任。如果您从http://www.mydomain.orghttp://mydomain.org发送请求, 它将失败,反之亦然。

在您的情况下,我所做的通常是使用/m2/scripts/site/bpg_process.asp?id=lg不带协议和主机但带有起始“/”的完整 URL“”,以便可以从 URL 树中的任何位置引用它。

您正在使用并且“不起作用”的“相对 URL”是什么?

于 2013-01-29T11:31:10.303 回答
0

就像达玛提到的那样。“不允许跨域 Ajax 调用”。

改用绝对“本地”路径。

链接引用开头的斜杠“/”指向文档根目录。

如果需要引用外部域,使用ajax调用本地.asp文档,为你调用外部页面,返回你想要的json数据。

我不确定这是在 asp 中,但在 php 中,curl 有效。

于 2013-01-29T18:56:30.350 回答