Javascript通过jquery从Url获​​取JSON数据

时间:2016-11-02 11:36:16

标签: javascript jquery json ajax

我有以下设置:
两个本地域192.168.30.1 - >带有JSON数据的Web服务器和我希望处理数据的169.254.168.105:3000。

网络服务器通过php显示数据,您必须通过身份验证才能查看数据。所以网址看起来像这样:" http://192.168.30.1/rest/activity14?auth_username=username&auth_password=password"
如果我在浏览器中输入此内容,请获取以下输出:

{
    people: [
        {
            id: "58107d10ad910",
            name: "name"
        }
    ],
    documents: [
        {
            document_id: "5811f9b306216",
            name: "document1"
        }
    ]
}

我需要在其他域上使用它。所以我试图通过jQuery ajax获取数据,但似乎无论如何我都无法得到它。我尝试了以下ajax调用:

$.ajax({
    type: "GET",
    url: $url,
    dataType: 'json',
    success: function(data) {
        console.log("success" );
    },
    error: function(e) {
        console.log("Error: " + e);
    }
});  

导致控制台出错("错误:[对象对象]")。

所以我尝试了不同的方法。我试过getJSON:

$.getJSON( $url, function(data) {
    console.log("success");
}).error(function(e) {
    console.log(e);
});

它甚至没有给出错误信息。

我还阅读了关于jsonp并将其用于跨域json调用。以下方法

function logResults(json) {
    console.log("json" + json);
}

$.ajax({
    url: $url + "callback=logResults?",
    dataType: "jsonp",
    jsonpCallback: "logResults",
    error: function(e) {
        console.log("Error: " + e);
    }
});

也没有用。在deloper工具网络选项卡中,我发现了以下关于jsonp调用的信息(状态:已取消):

General:
Request URL:http://192.168.30.1/rest/activity14?    auth_username=kusername&auth_password=password&callback=logResults?&callback=logResults&_=1478083606031

Request Headers:
Provisional headers are shown
Referer:http://169.254.168.105:3000/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36

Query String Parameters:
auth_username:username
auth_password:password
callback:logResults?
callback:logResults
_:1478083606031

我无法解释这一点,但也许这有助于找到我的问题。

对于我的具体案例,什么是正确的方法,如果我已经以正确的方式做了什么我到底做错了什么?

编辑:
这是普通JSON请求(而不是jsonp请求)的DevTools网络选项卡中的输出:

General:
Request URL:https://rippleapi.herokuapp.com/xhr_proxy?tinyhippos_apikey=ABC&tinyhippos_rurl=http%3A//192.168.33.10/rest/activity14%3Fauth_username%3Dusername%26auth_password%3Dpassword

Request Headers:
Provisional headers are shown
Access-Control-Request-Headers:x-ripple-user-agent
Access-Control-Request-Method:GET
Origin:http://169.254.168.105:3000
Referer:http://169.254.168.105:3000/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36

Query String Parameters:
tinyhippos_apikey:ABC
tinyhippos_rurl:http://192.168.33.10/rest/activity14?auth_username=username&auth_password=password

1 个答案:

答案 0 :(得分:0)

您要查询的端点应该返回编码对象而不是已解析的对象。如果您使用的是PHP,请尝试json_encode()