jquerymobile中ajax调用中的绝对/相对地址

时间:2013-01-29 11:18:09

标签: ajax jquery-mobile

以下代码适用于Safari和Chrome中的iPad和iPhone(4,5)。相反,在Android设备和桌面浏览器中,ajax调用不起作用(直接运行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;
});
});

2 个答案:

答案 0 :(得分:0)

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

这里重要的是该政策排除了不同的子域名。 防爆。如果您从http://www.mydomain.orghttp://mydomain.org 发送请求,则会失败,反之亦然。

我在您的情况下通常使用完整的网址" /m2/scripts/site/bpg_process.asp?id=lg"没有协议和主机,但有起始" /"所以它可以从URL树的任何地方引用。

什么是"相对网址"你正在使用的那个"不起作用"?

答案 1 :(得分:0)

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

改为使用绝对“本地”路径。

链接开头的斜杠'/'表示文档根目录。

如果您需要引用外部域,请使用ajax调用为您调用外部页面的本地.asp文档,并在json中返回所需的数据。

我不确定它在asp中是什么,但在php中,curl有效。