我正在尝试创建跨域ajax脚本,但我很难解决为什么ajax函数在表id中输出 undefined
而不是正确的动态数据。
$(document).ready(function () {
$.support.cors = true;
$.ajax({
type: "Post",
crossDomain: true,
contentType: "application/json; charset=utf-8",
url: "http://localhost:27335/test2.aspx/BindDatatable",
data: "{}",
dataType: "json",
success: function (data) {
console.log(data)
for (var i = 0; i < data.d.length; i++) {
$("#tbDetails").append("<tr><td>" + data.d[i].Name+ "</td><td>" + data.d[i].Loan + "</td><td>" + data.d[i].Evnt + "</td></tr>");
}
},
error: function (result) {
alert("Error");
}
});
});
提前感谢您的任何帮助。
答案 0 :(得分:2)
按照以下步骤
1.Debug你的方法BindDatatable()
2.在return serializer.Serialize(details);
你有没有结果?
如果没有,则用不同的序列化器序列化,例如Newtonsoft。您可以在Convert JSON String To C# Object
找到更多详细信息
$(document).ready(function () {
$.support.cors = true;
$.ajax({
type: "Post",
crossDomain: true,
contentType: "application/json; charset=utf-8",
url: "http://localhost:27335/test2.aspx/BindDatatable",
data: "{}",
dataType: "json",
success: function (data) {
alert(data.toSource()) ;
console.log(data);
for (var i = 0; i < data.d.length; i++) {
$("#tbDetails").append("<tr><td>" + data.d[i].Name+ "</td><td>" + data.d[i].Loan + "</td><td>" + data.d[i].Evnt + "</td></tr>");
}
},
error: function (result) {
alert("Error");
}
});
});
&#13;
此行警告(data.toSource())
var parsedData = $.parseJSON(data);
&#13;
答案 1 :(得分:1)
您的Webmethod BindDatatable()会返回JSON格式的数据。 您需要在使用之前解析它。
你可以这样做:
你的Ajax帖子就像:
$.ajax({
type: "Post",
crossDomain: true,
contentType: "application/json; charset=utf-8",
url: "http://localhost:27335/test2.aspx/BindDatatable",
data: "{}",
dataType: "json",
success: function (data) {
console.log(data)
var parsedData=$.parseJSON(data);
for (var i = 0; i < parsedData.d.length; i++) {
$("#tbDetails").append("<tr><td>" + parsedData.d[i].Name+ "</td><td>" + parsedData.d[i].Loan + "</td><td>" + parsedData.d[i].Evnt + "</td></tr>");
}
},
error: function (result) {
alert("Error");
}
});
这里我使用了 parsedData 。而不是数据。 你可以看看..
希望这会有所帮助!!