代码之家  ›  专栏  ›  技术社区  ›  Thinking Sites

phonegap上的Ajax调用未发送请求

  •  5
  • Thinking Sites  · 技术社区  · 13 年前

    我在这个上面拔头发。

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

    我已经设置了phonegap config.xml以允许我的域。该请求是服务器上的get以及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 request does not work

    有什么东西我不见了吗?我做错了什么?

    编辑: 我忘了提一下,我在ajax调用上设置的超时没有任何作用,它似乎只是忽略了它。

    3 回复  |  直到 8 年前
        1
  •  0
  •   Neograph734    13 年前

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

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

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

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

    $return =  $_GET["jsoncallback"].'({"title" : "test", "author" : "someone"});
    
        2
  •  0
  •   Piotr Krysiak    13 年前

    正如你所提到的,你的问题可能不是跨领域的。您的服务器是否记录任何请求?我在从index.html链接第二个(相同的)请求后遇到了类似的问题,第一个请求运行良好。我发现一个信息,它可能是一个电话漏洞。

        3
  •  0
  •   Thinking Sites    13 年前

    事实证明我的问题完全不同。由于移动浏览器添加AMD脚本的方式,我的依赖项没有加载。我通过将所有脚本合并到一个文件中解决了这个问题,从那以后就一直有效。