2017-06-06 70 views
0
function GetSort() { 
    var url = '@Url.Action("GetSort", "CatMaster")';   
    $.ajax({ 
     type: "POST", 
     url: url, 
     dataType: "json", 
     data: null, 
     success: function (data) {     
      restrctTrans = false;    
      $("#Order").data("kendoNumericTextBox").value(data.NxtSort);     
     }, 
     error: function (data) { 
      alert('error'); 
     } 
    }); 
} 

這就要求返回JSON值的控制器方法上獲得成功的Ajax。 但控制器返回一個值。 價值response.NxtSort爲1沒有從控制器JsonResult方法

+0

你有沒有試過'成功'方法的警戒? – User3250

+1

它應該是'.value(data);'not'.value(data.NxtSort);' – shakib

回答

1

「ajax的成功和錯誤功能不調用替換此變量。但是控制器 返回一個值。 「

這種情況極不可能是真的。如果控制器正在返回一些東西,那麼其中一個功能將運行。他們不會運行的唯一方法是,如果ajax調用在實際執行之前失敗,出於某種其他原因。您會在瀏覽器的開發人員工具中看到錯誤。

要驗證這一點,您可以檢查瀏覽器的網絡選項卡(在開發工具中,在大多數瀏覽器上按F12),並觀察ajax調用以查看返回給瀏覽器的HTTP響應。如果它是「200」,那麼「成功」肯定會運行。如果是別的,「錯誤」將會運行。您可以在「成功」功能的開始處放入「警報」命令以證明其運行。

同時檢查瀏覽器控制檯中是否存在任何錯誤。我預測data.NxtSort將不會存在於JavaScript上下文中,因爲正如您所提到的,您只能從控制器返回一個整數值,而不是可能包含具有該名稱的屬性的對象。 「成功」函數中的data將只是一個整數,其值爲1。這意味着當您嘗試訪問不存在的nxtSort屬性時,幾乎可以肯定會出現「未定義」錯誤並在控制檯中顯示。

這意味着,與您的說法相反,「成功」被調用,但之後崩潰而不輸出任何內容。

只需使用

$("#Order").data("kendoNumericTextBox").value(data); 

更換

$("#Order").data("kendoNumericTextBox").value(data.NxtSort); 

應該解決您的問題。

將來,如果您學習使用瀏覽器的開發工具來調試代碼,您可以避免這樣的簡單問題。 Chrome和Firefox中的工具特別強大且信息豐富。

1

試試這個

[HttPost] 
public JsonResult GetSort() 
{ 
    var response = _catMaster.GetNextSort(); 
    return Json(response.NxtSort, JsonRequestBehavior.AllowGet); 
} 

$("#Order").data("kendoNumericTextBox").value(data); 

以上

$("#Order").data("kendoNumericTextBox").value(data.NxtSort); 
相關問題