1

当我从我的 ajax 调用中获得成功时,我试图调用一个函数,但它不起作用。这是我到目前为止所尝试的。

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向你展示我从中得到了什么dtmsg.d图片)

编辑#2

buildTableBody如果我将函数中的命令粘贴到success:处理程序中,而不是在处理程序中调用buildTableBody函数,success:它实际上可以工作:

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

但这对我来说毫无意义,因为这实际上应该以两种方式起作用。

4

2 回答 2

1

很确定你的函数调用有错字

buildTableBody(td, msg.d);

应该

buildTableBody(dt, msg.d);

还有什么是返回类型Index.aspx/getMRPReasonCodeReport?如果是string,则必须先对字符串进行转义,然后才能将其视为 JSON。

于 2012-06-22T21:20:20.943 回答
1

尝试contentType : "application/json utf-8"从您的 AJAX 调用中删除。那是发送到服务器的数据类型。您可能需要默认内容类型。

除非您的服务器端资源配置为接受它可能接受的 jsonapplication/x-www-form-urlencoded

http://api.jquery.com/jQuery.ajax/

于 2012-06-22T21:21:22.643 回答