5

我正在把头发拉出来。

我有一个对我的服务器的 jquery ajax 调用,该调用在我的浏览器上运行,当我将它连接到我的本地代理进行 http 嗅探时,它在我的设备上运行,但当它在 wifi 或蜂窝网络上关闭我的代理时,它就会挂起。

我已经设置了 phonegap config.xml 以允许我的域。该请求是服务器上的获取以及 ajax 调用。你会注意到它是 jsonP。

调用是直接的jquery,无论如何我都会发布代码。api对象是我为保存应用程序功能而制作的自定义对象。

var dfd = $.ajax({
    url: myurl, // I've confirmed the url, but prefer to keep it private
    data: {
        ApplicationID: api.applicationID,
        DeviceID: api.device.uuid(),
        OSVersion: api.device.version(),
        DeviceVersion: api.device.platform(),
        Lat: lat,
        Lng: lng,
        Bearing: bearing
    },
    dataType: "jsonp",
    timeout: 30000
})
.fail(function (event, jqXHR, ajaxSettings, thrownError) {
    console.error(jqXHR);
});

我已经尝试过这个答案,这是我能找到的最接近我的问题的答案,但它似乎不起作用。 Phonegap jQuery ajax 请求不起作用

有什么我想念的吗?我究竟做错了什么?

编辑: 我忘了提,我在 ajax 调用上设置的超时什么也没做,它似乎只是忽略了它。

4

3 回答 3

0

既然你拉一个json字符串,为什么不使用

$.getJSON("http://www.example.com?jsoncallback=?",
    function(data){ ... }

注意 jsoncallback。这里发生的是 jquery 将一个额外的参数解析到代码中以验证结果是否来自实际请求。这发生在跨域请求上。

为了使您的“json-builder”兼容,只需将 jsoncallback 放在请求的前面:

$return =  $_GET["jsoncallback"].'({"title" : "test", "author" : "someone"});
于 2012-08-24T13:42:03.023 回答
0

正如您所提到的,您的问题可能不是跨域的。您的服务器是否记录任何请求?从 index.html 链接第二个(相同的)请求后,我遇到了类似的问题,第一个请求工作正常。我发现了一个信息,它可能是一个 phonegap 错误。

于 2012-09-03T06:30:33.483 回答
0

事实证明我的问题完全不同。由于移动浏览器如何添加 AMD 脚本,我的依赖项没有加载。我已经通过将所有脚本合并到一个文件中来解决这个问题,并且从那以后它就一直在工作。

于 2012-10-15T15:44:40.503 回答