【问题标题】:Cannot create javascript array from JSON response无法从 JSON 响应创建 javascript 数组
【发布时间】:2014-04-11 15:01:22
【问题描述】:

我正在使用 Jquery 和 AJAX 在后面的 C# 代码中调用 Web 方法,该方法运行存储过程,然后将数据作为字符串发送回。这一切都很完美。

当我取回我的值并尝试用它们创建一个数组以便我只能从数组中选择某些对象时,一切都崩溃了。我已经快速FIDDLE 解决了我遇到的问题。

我从我的存储过程中收到这样的字符串:12, 1288, 1800, 3088, 26288

但是当我尝试只获取“12”时,我要么收到整个字符串,要么只收到 12 中的“1”。

我已经尝试了 makeArray, stringify, split, replacing then splitting, making an array variable and push() into it 的所有方法...似乎没有任何效果。

以下是我在尝试时一直在注释掉的一些废代码,并且在逐步执行时我还添加了代码的图像:

 $.ajax({
                      type: "POST",
                      url: "LeadGraphGeneration.aspx/GetData",
                      contentType: "application/json; charset=utf-8",
                      data: strRequest,
                      dataType: "json",
                      success: function (msg) {
                          var returned = (msg.d);
                          //                          var returned = new Array();
                          //                          $(msg.d).each(function () {
                          //                              returned.push(this);
                          //                          });

                          ret1 = returned[1];

                          //                          var returnedd = JSON.stringify(msg.d);
                          //                          var returned = $.makeArray(returnedd);



                          //                          var ret1 = returned[0];
                          //                          var ret2 = returned[1];
                          //                          var ret3 = returned[2];
                          //                          var ret4 = returned[3];
                          //                          var ret5 = returned[4];


                          //data1 = dataArray[0];


                          $("#PaymentPeriod").text(ret1);
                          //                          $("#TotalInterest").text(ret2);
                          //                          $("#TotalFees").text(ret3);
                          //                          $("#TotalCost").text(ret4);
                          //                          $("#TotalPayment").text(ret5);

(右击,在新标签页中打开查看完整尺寸) 我希望你能帮助我弄清楚为什么我不能从我正在努力构建的数组中选择单个对象。

如果您需要更多信息,请告诉我。

【问题讨论】:

  • 试试这个var rett = $.parseJSON("["+returnedd+"]");
  • @Anton,谢谢。这也有效:)

标签: c# javascript jquery arrays


【解决方案1】:

“但是当我尝试只获取“12”时,我要么收到整个字符串,要么只收到来自 12.. 的“1”。”

如果你的字符串是"12, 1288, 1800, 3088, 26288" 并且它在msg.d 中,那么:

var returned = msg.d.split(/\s*,\s*/);

正则表达式告诉split 在任意运行的可选空白字符后分割字符串,后跟逗号,然后是可选空白字符。

【讨论】:

  • 谢谢 TJ... 这有效!我会尽快接受答案。我需要复习一下我的正则表达式,这样我就不会坐几个小时试图解决问题。哈哈
【解决方案2】:
var returnedd = "12, 1288, 1800, 3088, 26288"
var rett = $.makeArray(returnedd);

makeArray 不会将该格式的字符串转换为数组,而是使用split

var rett = returnedd.replace(/\s/g, "").split(",");
alert(rett[0])

至于

ret2 = returnedd[0];

这是在 string 上调用 [0],这将为您提供第一个 char(就像 .charAt(0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2011-12-26
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 2021-01-31
    相关资源
    最近更新 更多