无法从JSON响应创建javascript数组

时间:2014-04-11 15:01:22

标签: c# javascript jquery arrays

我正在使用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);

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

如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:2)

  

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

如果您的字符串为"12, 1288, 1800, 3088, 26288"且位于msg.d,则为:

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

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

答案 1 :(得分:1)

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];

这是在字符串上调用[0],它会为您提供第一个 char (就像.charAt(0)