Ajax调用未达到控制器操作方法,状态500,内部服务器错误

时间:2014-04-02 13:26:30

标签: jquery ajax asp.net-mvc xmlhttprequest responsetext

我对控制器动作方法的ajax调用没有击中控制器,它介于两者之间。它说xhr.status = 500response text = Internal Server Error

相同的代码在其他项目中运行良好。

JavaScript代码

 ajaxCall: function (data, url, success, error, noShow) {
    // make sure that there is never an empty POST body to protect against proxy allowing too soon
    if (!data) {
        data = "{'dummy':1}";
    }
    var reqData = data;
    $.ajax({
        type: "POST",
        traditional: true,
        url: url,
        data: data,
        // switch on/off geenraic AJAX events bound globally
        /** @default false
        */
        global: !(noShow || false),
        cache: false,
        dataType: "json",
        // add CSRF token to each request
        beforeSend: function (xhr) { /* jquery 1.5.* use headers */
            var csrf_token = $("[name=__RequestVerificationToken]").val();
            xhr.setRequestHeader('__RequestVerificationToken', csrf_token);
        },
        contentType: "application/json",
        success: function (data) {
            success(data);
        },
        error: function (a, b, c) {
            // repeat ajax call when "Empty body element" message gets returned. It means that proxy challenge was completed too soon.
            if (a.responseText == "EmptyBodyElement")
                Service.ajaxCall(reqData, url, success, error);
            else {
                if (error)
                    error(a, b, c);
                else
                    Service.responseError(a, b, c);
            }
        }
    });
},

我在jQuery 1.9.1中收到错误

if ( callback && ( isAbort || xhr.readyState === 4 ) ) 

xhr.status = 500xhr.responsetext = Internal Server Error

在其他项目中使用相同的代码,我检查了所有的注册事项。

2 个答案:

答案 0 :(得分:0)

控制器动作方法

[使用AllowAnonymous]

public ActionResult CheckUserStatus(string UserId,bool NewUserStatusCheck)

{

}

断点未击中

Xhr.responstext =“内部服务器错误”

答案 1 :(得分:0)

我遇到了类似的问题。

这是我的错误代码。

“JQUERY CODE”

 $.ajax({
         url: "@Url.Action("AllocateByCapacity","BookScenario")",
         dataType: 'json',
         type: 'POST',
         contentType: 'application/json',
         data: JSON.stringify({'scenarioId':JSON.stringify(PlanningBookHandler.getScenarioId())                                     
                        }),
                        success: function (response) {
                            SCP.Utils.showMessageDialog("Records Updated");
                        },
                        error: function () {
                            SCP.Utils.showMessageDialog("Records UpdateFailed");
                        }
                    });



控制器行动方法代码

 public ActionResult AllocateByCapacity(int scenarioId)
 {

            return Json(new object());
 }

在我的例子中,你可以看到我将字符串值传递给期望整数参数的action方法。这是我在代码中发现的错误。将参数更改为整数值代码后工作正常。