Javascript jQuery:从AJAX请求调用函数
我试图在ajax调用成功时调用函数,但它不起作用。这就是我到目前为止所尝试的Javascript jQuery:从AJAX请求调用函数,javascript,jquery,ajax,datatables,generic-handler,Javascript,Jquery,Ajax,Datatables,Generic Handler,我试图在ajax调用成功时调用函数,但它不起作用。这就是我到目前为止所尝试的 function dtMRPReasonCode(dt) { var data = null; jQuery.ajax({ type: "POST", data: {}, url: "Index.aspx/getMRPReasonCodeReport", contentType: "application/json; charset=ut
function dtMRPReasonCode(dt) {
var data = null;
jQuery.ajax({
type: "POST",
data: {},
url: "Index.aspx/getMRPReasonCodeReport",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
if (msg.d) {
console.log(dt);
console.log(msg.d);
buildTableBody(dt, msg.d);
}
},
error: function(xhr, ajaxOptions, thrownError) {
alert("Error: dtMRPReasonCode");
}
});
return false;
}
function buildTableBody(dt, obj) {
dt.fnClearTable();
data = [];
$(obj).each(function(index, value) {
element = [];
element.push(value.Metric);
element.push(value.Region);
element.push(value.Plant);
element.push(value.Customer);
element.push(value.IMAC);
element.push(value.NotFilled);
element.push(value.Filled);
element.push(value.Total);
data.push(element);
});
dt.fnAddData(data);
}
提前谢谢
编辑#1
我使用了console.log
来向您展示我从dt
和msg.d
获得的信息(图)
编辑#2
如果我从success:
处理程序中的buildTableBody
函数粘贴命令,而不是在success:
处理程序中调用buildTableBody
函数,那么它实际上可以工作:
function dtMRPReasonCode(dt) {
var data = null;
jQuery.ajax({
type: "POST",
data: {},
url: "Index.aspx/getMRPReasonCodeReport",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
dt.fnClearTable();
data = [];
$(msg.d).each(function(index, value) {
element = [];
element.push(value.Metric);
element.push(value.Region);
element.push(value.Plant);
element.push(value.Customer);
element.push(value.IMAC);
element.push(value.NotFilled);
element.push(value.Filled);
element.push(value.Total);
data.push(element);
});
dt.fnAddData(data);
},
error: function(xhr, ajaxOptions, thrownError) {
alert("Error: dtMRPReasonCode");
}
});
return false;
}
但这对我来说毫无意义,因为这实际上应该在两个方面都起作用。非常确定您的函数调用中有输入错误
buildTableBody(td, msg.d);
应该是
buildTableBody(dt, msg.d);
还有
Index.aspx/getMRPReasonCodeReport
的返回类型是什么?如果是string
,则必须先取消对字符串的扫描,然后才能将其视为JSON。尝试从AJAX调用中删除contentType:“application/JSON utf-8”
。这是发送到服务器的数据类型。您可能需要默认的内容类型
除非您的服务器端资源配置为接受json,否则它可能会接受application/x-www-form-urlencoded
你得到了什么?什么告诉你它不起作用了?它肯定会成功吗?在
success
中,发出警报以显示td
和msg.d
。在这里发布您的结果。另一个一般性评论-您似乎发布了一个空对象来“获取”数据(getMRPReasonCodeReport)。。您真的应该使用HTTP GET来代替。@BLSully,我将把这一点添加到我不使用ASMX/ASPX的原因列表中。)ASPX/asmxwebservice方法需要OP在处理JSON序列化时提供的contentType;charset=utf-8与ASMXIm不是100%正这是这里的问题,但我以前遇到过这个问题。如果不看到服务器端代码/配置等,很难判断,但值得一试:)事实上,它返回一个通用列表。