json结果显示第一个值

时间:2013-12-17 18:38:04

标签: javascript ajax json

我找到了几个类似于这个主题的帖子,但我尝试过的任何内容实际上都没有。我的问题很简单,应该很容易回答。我的返回json对象将有一个键和一个值。对于下面的代码,警报显示“[{”DISCOUNT“:1}]”,我要做的就是解析“1”并显示它。最终,我想将该值插入变量并用于乘法,但我甚至无法获得自己显示的数字。我的代码如下:

function codeMatchTest() {
if ($('#dbReturnString').val() == '') {
    alert("Please enter a discount code.");
} else {
$.ajax({
    type: "POST",
    url: "PROMO.svc/MatchCode",
    contentType: "application/json",
    dataType: "json",
    data: JSON.stringify({ codeInput: $('#dbReturnString').val().toLowerCase() }),
    success: function (json) {
        alert(json.d);
        /*alert (json.d.discount); // getting "undefined"
        $.each(json.d, function (key, value) {
             var discount = value; 
        });
        alert("Success: " + discount); //getting "undefined" */
    },
    error: function () {
        alert("There was an error with your request.");
    }
});
}

}

我没有找到关于如何在json对象中实际使用数据的好参考。我的json对象只包含一个键和值,我只需要使用该值。

另外,我尝试使用$ .each进行多次迭代,但没有工作。根据jquery文档,它应该很容易,但我没有运气。

6 个答案:

答案 0 :(得分:1)

如果您的提醒显示"[{"DISCOUNT":1}]",则表示您在阵列中有对象。

尝试alert(json.d[0].DISCOUNT);

答案 1 :(得分:1)

JSON解析的对象是区分大小写的,加上它似乎json.d包含一个字符串(似乎是在json中)而不是一个对象。尝试:

  

var discount = JSON.parse(json.d);   discount = discount [0] .DISCOUNT;

答案 2 :(得分:0)

success: function(json) {
    alert(json.d[0]["DISCOUNT"]);
}

答案 3 :(得分:0)

首先评论你的代码,你正在重新发明jQuery的功能。

data: JSON.stringify({ codeInput: $('#dbReturnString').val().toLowerCase() }),

应该只是

data: { codeInput: $('#dbReturnString').val().toLowerCase() },

现在要获取数据很简单,您将返回一个包含对象的数组。

让我们将其视为常规变量,而不是Ajaqx调用。

var json = [{"DISCOUNT":1}];

所以你有一个阵列?你如何得到它内部的对象?您引用索引。既然你说只返回一个索引,那么使用[0]来访问它。

success: function (json) {
    alert(json[0].DISCOUNT);

答案 4 :(得分:0)

要访问json中的第一项,您可以使用

alert(json.d[0].DISCOUNT);

因为json.d是一个数组,它包含一个0索引的对象。因此,json.d[0]将从数组中选择第一个项目/对象,并使用.DISCOUNT您可以访问该对象的属性。也可以访问该属性,如

alert(json.d[0]["DISCOUNT"]);

答案 5 :(得分:0)

试试这种方式

您可以使用JSON.parse(json.d)/ json.d

var data = json.d; for(i=0;i<data.length;i++) {
alert(data[i].fieldname); }