AJAX提交 - 状态200有错误

时间:2017-04-06 18:19:34

标签: c# jquery asp.net ajax

我意识到已有问题,但没有一个能够解决我的问题。

我尝试使用AJAX在Jquery模式中提交表单,但尽管说状态为200,但它仍无效。以下是代码:

$(document).ready(function () {
    $("#dialog-form").dialog({
        autoOpen: false,
    });

    $("#add-course").click(function () {
        $("#dialog-form").dialog("open");
        return false;
    });

    $("#btncancel").click(function () {
        $("#dialog-form").dialog("close");
    });

    $('#<%=btnsubmit.ClientID%>').on('click', function (e) {
        e.preventDefault();
        var courseDetails = {};
        courseDetails.Code = $('#<%=addcode.ClientID%>').val();
        courseDetails.Name = $('#<%=addname.ClientID%>').val(); 

        var jsonData = JSON.stringify({
            courseDetails: courseDetails
        });

        $.ajax({
            url: '<%=ResolveUrl("updatetest.aspx/addCourseSP") %>',
            type: "POST",
            data: jsonData,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            error: OnErrorCall,
        });

        function OnSuccess(response, jqXHR, textStatus, errorThrown) {
            var result = response.d;
            if (result == "success") {
                $("#msg").html("Success");
                $("#dialog-form").dialog("close");
            } else {
                $("#msg").html("jqXHR: " + JSON.stringify(jqXHR) + " " + "AJAX error: " + textStatus + ' : ' + errorThrown);
            }
        }

        function OnErrorCall() {
            $("#msg").html("error");
        }
    });
});

后面的代码调用我检查过的存储过程。我还检查了jsonlint.com上的JSON字符串,它说它有效。

我在浏览器(Chrome / Firefox)中使用F12进行了检查,基本上说的是同样的事情,状态200用d:&#34;错误&#34;。 JSON字符串在Params下,所以我不认为这是问题所在。

我已尝试使用各种不同的方式进行调试,现在它正在返回jqXHR:&#34;成功&#34; AJAX错误:[object Object]:未定义。我不知道还能尝试什么。有人有什么想法吗?

2 个答案:

答案 0 :(得分:0)

jQuery.ajax()将成功回调显示为:

  

<强>成功

     

类型:功能(任何数据,字符串textStatus,jqXHR jqXHR)

与您的参数列表不匹配

function OnSuccess(response, jqXHR, textStatus, errorThrown)

当您尝试在脚本中使用此功能时,textStatus不是字符串,而errorThrown 未定义

因此请求成功(状态200),但是您的脚本在响应返回给客户端后生成错误。

答案 1 :(得分:-1)

您的函数包含以下行

 dataType: "json",

这意味着返回的数据必须正确格式化为json,如果不是,则会将其视为错误