没有从控制器JsonResult方法获得Ajax Success

时间:2017-06-06 13:47:31

标签: json ajax asp.net-mvc

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值的控制器方法:

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

问题是没有调用ajax成功和错误函数。 但是控制器返回一个值。 response.NxtSort的值为1

2 个答案:

答案 0 :(得分: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);  

答案 1 :(得分:1)

  

"未调用ajax成功和错误函数。但控制器   返回一个值。"

这种情况极不可能如此。如果控制器返回了某些内容,那么其中一个函数运行。他们不会运行的唯一方法是在实际执行之前ajax调用失败,原因是其他原因。您会在浏览器的开发人员工具中看到错误。

要验证这一点,您可以检查浏览器的网络选项卡(在开发人员工具中,在大多数浏览器上按F12)并观察ajax调用以查看返回给浏览器的HTTP响应。如果是" 200"然后"成功"肯定会运行。如果是其他任何事情,"错误"会跑。你可以发出警告"命令进入"成功"功能证明它运行。

同时检查浏览器控制台中是否有任何错误。我预测JavaScript上下文中不存在data.NxtSort,因为正如您所提到的,您只从控制器返回一个整数值,而不是可以包含具有该名称的属性的对象。成功"成功"} function只是一个值为data的整数。这意味着几乎可以肯定的是" undefined"当您尝试访问不存在的1属性时,错误发生并显示在控制台中。

这意味着,与您的陈述相反,"成功" 调用,但随后崩溃而没有输出任何内容。

简单地替换

nxtSort

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

应该解决你的问题。

将来,如果您学习使用浏览器的开发人员工具来调试代码,可以避免出现这样的简单问题。 Chrome和Firefox中的工具特别强大且信息丰富。