5

data从服务器中,我得到以下 JSON:

{
    "response": {
        "upload_url": "http:\/\/cs9458.vk.com\/upload.php?act=do_add&mid=6299927&aid=-14&gid=0&hash=73e525a1e2f4e6a0f5fb4c171d0fa3e5&rhash=bb38f2754c32af9252326317491a2c31&swfupload=1&api=1&wallphoto=1",
        "aid": -14,
        "mid": 6299927
    }
}

我需要得到upload_url. 我正在做:

function (data) {
    var arrg = JSON.parse(data);
    alert(data.upload_url);
});

但它不起作用(警报不显示)。

如何获取参数upload_url

4

4 回答 4

6

看起来您需要访问 arg,而不是数据。您还需要先访问“响应”键。

function (data) {
    var arrg = JSON.parse(data);
    alert( arrg.response.upload_url);
}
于 2013-09-27T03:53:43.993 回答
2

这里有几个正确的答案,但是有一个触发器决定了您应该如何处理返回的数据。

当您使用 ajax 请求并使用 JSON 数据格式时,您可以通过两种方式处理数据。

  1. 返回时将您的数据视为 JSON
  2. 通过添加 dataType 为 JSON 配置 ajax 调用

请参阅以下示例:

返回数据字符串:

{"color1":"green","color2":"red","color3":"blue"}

没有数据类型的 ajax 调用:

$.ajax({
    method: "post",
    url: "ajax.php",
    data: data,
    success: function (response) {
        var data = JSON.parse(response);
        console.log(data.color1); // renders green
        // do stuff 

    }
});

使用 dataType 的 ajax 调用:

$.ajax({
    method: "post",
    url: "ajax.php",
    dataType: "json", // added dataType
    data: data,
    success: function (response) {
        console.log(response.color1); // renders green
        // do stuff 
    }
});

在您的情况下,您可能在已经为 JSON 配置调用时使用了 JSON.parse() 。希望这能让事情变得清楚。

于 2013-09-27T16:01:30.120 回答
1

如果响应是 json 而不是字符串,那么

alert(response.id);

或者

alert(response['id']);

否则

var response = JSON.parse('{"id":"2231f87c-a62c-4c2c-8f5d-b76d11942301"}');
response.id ; //# => 2231f87c-a62c-4c2c-8f5d-b76d11942301
于 2013-09-27T03:54:44.690 回答
0

您的代码有一个小错误。尝试:

function (data) {
   var arrg = JSON.parse(data);
   alert(arrg.response.upload_url);
});
于 2013-09-27T03:52:41.583 回答