Ajax json从域中获取数据

时间:2016-01-31 06:11:42

标签: javascript json ajax

我正在使用phonegap并尝试使用ajax获取用户列表 打电话但我的功能在移动设备上没有返回它的工作 在浏览器中很好

这里是函数和url数据是xml格式

$(document).ready(function(){
$.ajax({
    type: "POST",
    url: "http://my_server_url/user/selectuser",
    dataType: 'jsonp',
    crossDomain: true,
    processData: true,
    cache: false,
    success: function(data)
    {
        alert("Success:"+data.detail[0].Username);
    },
    error: function(data){
        alert("Error:"+data);
    },
    statusCode: {
        404: function() {
            alert( "page not found" );
        }
    }
}); 
});

由于

2 个答案:

答案 0 :(得分:1)

我在移动设备上检查此类问题的一般步骤是:

  1. 您可以做的最简单的事情是尝试通过手机上的常规浏览器窗口提取资源,看看有什么不同。只需输入网址,看看会发生什么。如果您无法在通用Chrome / Mobile Safari标签上将其下拉,则错误可能会帮助您找出问题所在。如果您可以将其下拉,问题可能在您的代码中(可能是URL中的拼写错误)。如果您没有执行GET请求,这将无效,但它至少可以帮助您确定您的手机是否可以访问您的服务器。
  2. 通过USB将设备连接到PC,并在Safari / Chrome调试器的“网络”选项卡中查看请求。你可能应该一直这样做,但它似乎总是我的第二步。
  3. 在发送请求之前设置一个断点,在成功处理程序中设置另一个断点,在错误处理程序中设置第三个断点。请求可能会成功,但响应后的错误可能会停止您的程序。或者响应文本可能不是您所期望的(网页而不是JSON流。)
  4. 如果您正在执行非GET请求(就像您在这里一样),您可以尝试直接在调试器控制台中运行您自己的AJAX请求。如果您完全复制请求,它不应该提供比在网络选项卡中查看常规请求更多的信息,但它允许您多次修改请求而无需重新编译您的应用程序。它可以节省大量时间。
  5. 如果您的手机根本无法访问资源(#1),那么您可能拥有手机不共享的专用本地环境。例如,您可能会拨打localhost127.0.0.1,这是您的手机永远无法访问的(因为这些IP地址在大多数网络上具有特殊含义,基本上意味着'我'或'此计算机')。或者,您可能正在呼叫192.168.xxx.xxx10.xxx.xxx.xxx,而您的手机无法访问,因为它不在该专用网络上(例如,如果您不在同一个wifi上)。在这种情况下,您有两个选择:

    1. 弄清楚如何将这些资源暴露给外部请求,或
    2. 让您的手机进入您的网络环境。在极端情况下,我实际上必须构建自己的DNS服务器,更改手机的网络设置以使用它,并将请求重定向到特定的域名。

答案 1 :(得分:0)

使用Phonegap版本" Cli-5.2.0",需要使用白名单插件在Android上成功进行ajax调用。在config.xml中添加下面提到的行,以使用带有Phonegap云构建的白名单插件。

P

检查https://github.com/apache/cordova-plugin-whitelist是否有白名单插件说明