2012-06-22 122 views
1

我试图调用一个函数,当我从我的ajax调用中获得成功,但它不工作。这是我迄今为止尝试过的。jQuery:从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); 
} 

enter image description here 提前感谢!

编辑#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; 
} 

但它对我来说没有意义,因为这实际上应该在两个方面工作。

+0

你想说什么?什么告诉你它不工作? –

+0

它是否成功回归? –

+0

您的函数中是不是'td'调用错字?除此之外,请检查您的控制台是否有任何错误。 – Styxxy

回答

1

敢肯定你有一个错字在你的函数调用

buildTableBody(td, msg.d); 

应该

buildTableBody(dt, msg.d); 

还有什么是Index.aspx/getMRPReasonCodeReport返回类型?如果它是string,那么在将其视为JSON之前,必须先取消该字符串。

+0

实际上,它返回一个通用列表。 – Eder

1

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

除非你的服务器端资源配置为接受JSON很可能接受application/x-www-form-urlencoded

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

+1

ASPX/ASMX webservice方法需要处理JSON序列化时OP提供的contentType。 – BLSully

+0

http://stackoverflow.com/questions/900231/asmx-webservice-not-returning-json-can-only-post-using-application-x-www-form-u – marteljn

+0

有趣的是,我只有成功使用'application/json; charset = utf-8'与ASMX – BLSully