2012-06-22 157 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