json结果显示第一个值

json result display first value

本文关键字:第一个 显示 结果 json      更新时间:2023-09-26

我发现了几个类似于这个主题的帖子,但我尝试过的都没有真正奏效。我的问题很简单,应该很容易回答。我的返回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对象将只由一个键和值组成,我只需要使用该值。

此外,我已经尝试了多次使用$.每个迭代,但都不起作用。基于jquery文档,这应该很容易,但我运气不好。

如果您的警报显示"[{"DISCOUNT":1}]",则表示您在数组中有一个对象。

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

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

var折扣=JSON.parse(JSON.d);折扣=折扣[0]。折扣;

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

对代码的第一个评论是,您正在重新发明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);

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

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

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

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

尝试这种方式

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

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