Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Jquery中循环对象?_Javascript_Jquery_Asp.net_Json - Fatal编程技术网

Javascript 如何在Jquery中循环对象?

Javascript 如何在Jquery中循环对象?,javascript,jquery,asp.net,json,Javascript,Jquery,Asp.net,Json,我从以下信息中获得TypeError:字段[I]未定义: function ObserverFetch() { $.ajax({ type: "POST", url: "Observer.aspx/ObserverFetch", data: JSON.stringify({ id: "" }), contentTy

我从以下信息中获得
TypeError:字段[I]未定义

function ObserverFetch() {

               $.ajax({
                   type: "POST",
                   url: "Observer.aspx/ObserverFetch",
                   data: JSON.stringify({ id: "" }),
                   contentType: "application/json; charset=utf-8",
                   dataType: "json",
                   async: true,
                   success: function (data, status) {

                       $.each(data, function (i, field) {

                           alert(field[i].BidderName);
                           //$('#dvBids').text(field);
                           //$("#gvDetails").append("<tr><td>" + field.SrNo + "</td><td>" + field.BidderName + "</td><td>" + field.BidAmt + "</td></tr>");
                       });                     
                   },
                   failure: function (data) {
                       alert(data.d);
                   },
                   error: function (data) {
                       alert(data.d);
                   }
               });
       }
$('#dvBids').text(JSON.stringify(data));给我:

{"d":"[{\"SrNo\":4,\"BidderName\":\"faisal\",\"BidAmt\":6000000.0000,\"BidDate\":\"\\/Date(1430199508063)\\/\"},{\"SrNo\":3,\"BidderName\":\"arbaaz jalil\",\"BidAmt\":5000010.0000,\"BidDate\":\"\\/Date(1430199494083)\\/\"},{\"SrNo\":2,\"BidderName\":\"arbaaz\",\"BidAmt\":500000.0000,\"BidDate\":\"\\/Date(1430199483530)\\/\"},{\"SrNo\":1,\"BidderName\":\"shekhar1\",\"BidAmt\":5000.0000,\"BidDate\":\"\\/Date(1430199394957)\\/\"}]"}
TypeError: invalid 'in' operand a
$.each(data.d,function(i,field){给我:

{"d":"[{\"SrNo\":4,\"BidderName\":\"faisal\",\"BidAmt\":6000000.0000,\"BidDate\":\"\\/Date(1430199508063)\\/\"},{\"SrNo\":3,\"BidderName\":\"arbaaz jalil\",\"BidAmt\":5000010.0000,\"BidDate\":\"\\/Date(1430199494083)\\/\"},{\"SrNo\":2,\"BidderName\":\"arbaaz\",\"BidAmt\":500000.0000,\"BidDate\":\"\\/Date(1430199483530)\\/\"},{\"SrNo\":1,\"BidderName\":\"shekhar1\",\"BidAmt\":5000.0000,\"BidDate\":\"\\/Date(1430199394957)\\/\"}]"}
TypeError: invalid 'in' operand a

奇怪的是,来自服务器的响应是一个JSON对象,只有一个属性,
d
,它是一个字符串,包含数组的JSON。如果是您的服务器方法生成该响应,您可能希望调整它,使
data.d
是一个数组,而不是字符串

要获得这些结果并循环它们,您需要对其进行解析,然后直接使用
字段,而不是通过
i

var fields = JSON.parse(data.d);
$.each(fields, function(i, field) {
    alert(field.BidderName);
});
或者当然:

$.each(JSON.parse(data.d), function(i, field) {
    alert(field.BidderName);
});

旁注:由于
data.d
的解析版本是一个数组,在任何现代浏览器上,您都可以使用
array#forEach
而不是
$。每个
都有一个稍微不那么混乱的回调参数列表。(
array#forEach
可以在IE8和更早版本上轻松填充。)


这两个方面的活例子

var数据={
“d”d:“d”d:“d”d:“d”d:“d”d:“d”d:“d”d:“d”d:“,“投标日期:”:,,“投标日期:”:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“投标日期:,,,,,,,,,,,,,,,,,,,,,,“投标日期:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1430199483530)\/\“},{\'SrNo\':1,\”投标人名称\“:\“shekhar1\”,“BidAmt\”:5000.0000,\“BidDate\”:\“\\/日期(1430199394957)\/\”}”
};
log(“使用$.each:”;
$.each(JSON.parse(data.d)、函数(i、字段){
snippet.log(field.BidderName);
});
snippet.log(“---”);
log(“使用forEach”);
parse(data.d).forEach(函数(字段){
snippet.log(field.BidderName);
});

问题在于,在
var-fiel
中,数组的每个元素都有一个值。解决方案bn是:

$.each( obj, function (i, field) {
  alert(field.BidderName );
});

感谢您的解决方案奏效。我已经在问题中添加了服务器端代码。对于Jquery/ajax请求,我非常不在行。@Arbaaz:很高兴这有帮助。我将从问题中删除服务器端代码,然后发布一个新问题,问到“如何使此代码返回
数据的数组。d
而不是字符串?”(包括它当前返回的JSON)。最好就是这样做。