【问题标题】:Cannot get JSON results using PhoneGap and javascript on iPhone App but get results on android app using same code无法在 iPhone 应用程序上使用 PhoneGap 和 javascript 获取 JSON 结果,但使用相同代码在 android 应用程序上获取结果
【发布时间】:2012-06-28 12:58:15
【问题描述】:

目前我在 phonegap 应用程序中使用此代码

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","http://192.168.1.19:8080/searchMobile?categoryRequest=true", true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = function() {alert(xmlhttp.status);
if (xmlhttp.readyState == 4) {
    var responseObject = eval("(" + xmlhttp.responseText + ")");
    var results = responseObject.result;
    if (results != null)
    {
        var resLength = results.length;
        category.length = category.length + resLength;
        for ( var i = 0; i < resLength; i++)
        {
            category.options[category.length - (resLength - i)].innerHTML = results[i].categoryName;
            $(category).selectmenu("refresh");
      }
    }
}

此代码在 android 中运行,但是当我在 iphone 上运行此代码时,它给出的状态为 0 表示不起作用。 我该如何克服这个问题 非常感谢。

【问题讨论】:

    标签: javascript android iphone json cordova


    【解决方案1】:

    首先正如@Raymond Camden 所说,确保您的网址是white listed in the .plist。其次,从 file:// 协议执行 AJAX 时,您获得 0 状态是完全正常的。 Webkit 会将状态设置为 0,因为您正在执行跨域请求,该请求在 Web 浏览器中会被阻止,但在 Web 视图中,如 PhoneGap 使用,完全没问题。所以在这种情况下 0 == 200。第三次摆脱 eval,如果您要返回 JSON 数据,请使用 JSON.parse(xmlhttp.responseText),因为它是 much safer

    【讨论】:

    • 非常感谢西蒙,我明白了,谢谢你,它可以工作......但是我们如何在 phonegap 构建中为 ios 构建它告诉我“需要一个 siging 密钥”......非常感谢
    • 还有一个问题..如何在运行时将 url 添加到 .plist 文件中的白名单中,因为在我的应用程序中,我使用不同的 2 域名来获取数据,所以我该怎么做请帮忙..
    【解决方案2】:

    尝试将 URL 添加到白名单。

    【讨论】:

      猜你喜欢
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      相关资源
      最近更新 更多