从字符串到数组的ajax响应

时间:2014-07-07 14:55:55

标签: jquery ajax

所以我有这个ajax代码,它将数组作为字符串返回。我需要显示数组的第一个值或第二个值。像response.total或response [0]。

以下是我在执行console.log(响应)时从响应中获得的内容:

{"total":1,"type":"like"} 

这是我的阿贾克斯。

$.ajax({
    url: '/pin/like?pinId='+pinId,
    type: 'POST',
    data: {actionSignature: actionSignature, actionSignatureSeed: actionSignatureSeed},
        success: function(response) {
            console.log(response[0]);
            likeButton.html("<i class='icon-heart'></i> "+likeButton.attr('data-text-'+response[1]));
            likeButton.html("<i class='icon-heart'></i> " + response[0]);
            likeButton.removeClass('disabled');
        },
        error: function(response) {
            alert('An error occurred, please reload the page and try again.');
        }
    });

4 个答案:

答案 0 :(得分:3)

返回的JSON看起来不像一个数组,它代表一个具有两个属性(总数和类型)的javascript对象。

你确定它是一个字符串而不是实际的对象(控制台通常会以那种眼睛可读的格式呈现它)吗?如果它绝对是一个字符串,那么您可以在页面中包含开源json2.js文件,并使用类似

的内容将其强制转换回对象
var responseObject = JSON.parse(response);

但是,如果它已经返回了对象(很可能就是这种情况),那么您可以使用

访问它的属性
response.total

response.type

(将返回&#34; 1&#34;和&#34;分别为&#34;

答案 1 :(得分:1)

只需将dataType: 'JSON'添加到$.ajax选项即可。这样JSON字符串就会自动转换为javascript对象,您可以使用response.totalresponse.type

请注意 - 如果您的回复不是JSON字符串,则会触发您error:部分请求。

答案 2 :(得分:0)

Json以字符串形式返回。你需要解析它。否则响应[0]将只是“{”。然后,您可以使用response.total和response.type访问该对象。

$.ajax({
url: '/pin/like?pinId='+pinId,
type: 'POST',
data: {actionSignature: actionSignature, actionSignatureSeed: actionSignatureSeed},
    success: function(response) {
        var response = $.parseJSON(response);
        likeButton.html("<i class='icon-heart'></i> "+likeButton.attr('data-text-'+response.type));
        likeButton.html("<i class='icon-heart'></i> " + response.total);
        likeButton.removeClass('disabled');
    },
    error: function(response) {
        alert('An error occurred, please reload the page and try again.');
    }
});

答案 3 :(得分:0)

使用此,

 likeButton.html("<i class='icon-heart'></i> "+likeButton.attr('data-text-'+response.type));
 likeButton.html("<i class='icon-heart'></i> " + response.total);