2017-06-06 123 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); 
相关问题