Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery JSON调用后错误函数_Jquery_Asp.net Mvc_Json - Fatal编程技术网

Jquery JSON调用后错误函数

Jquery JSON调用后错误函数,jquery,asp.net-mvc,json,Jquery,Asp.net Mvc,Json,我有一个jquery post调用,它调用了error函数,尽管它将数据输入到数据库中非常好 <script type="text/javascript"> $(document).ready(function () { $("#ExtMailCreate").click(function () { var url = '@Url.Action("Create")'; var data = JSON.string

我有一个jquery post调用,它调用了error函数,尽管它将数据输入到数据库中非常好

<script type="text/javascript">
    $(document).ready(function () {
        $("#ExtMailCreate").click(function () {
            var url = '@Url.Action("Create")';
            var data = JSON.stringify(SaveExternalMail());
            $.ajax({
                type: "POST",
                url: url,
                data: data,
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    $("#result").append("pass");
                },
                error: function (data) {
                    $("#result").append("error");
                }
            });
        });
    });

    function SaveExternalMail() {
        var costcentrecode = $("#CostCentreCode").val();
        var day = $("#ExtMailDatePicker").val();
        var externalMailItemID = $("#ExternalMailItemID").val();
        var externalMailLocationID = $("#ExternalMailLocationID").val();
        var quantity = $("#Quantity").val();
        return {
            CostCentreCode: costcentrecode,
            Day: day,
            ExternalMailItemID: externalMailItemID,
            ExternalMailLocationID: externalMailLocationID,
            Quantity: quantity
        };
    }
</script>

我认为问题在于指定
JsonRequestBehavior.AllowGet

然后发布到该方法:

$.ajax({
  type: "POST",
  url: url,

如果数据库被填充,我们知道存储库代码正在启动。浏览器正在报告一个HTTP403,闻起来好像框架正在抛出一个安全异常,如果它希望响应GET并接收POST,它可能会这样做。

如果您指定数据类型为json,但响应无法解析为json,ajax请求将进入错误块

打开chrome并在错误块中放置断点,然后查看数据值。将内容放在json验证器中,并检查以确保您的响应是有效的json

同时将成功和错误函数的方法sigs更改为

success: function(data, txtStatus, jqxhr){ // code here }
error: function( jqxhr, txtStatus, errorThrown) { // code here }
然后在这些函数中放置断点,您可以检查参数并更清楚地看到发生了什么

--更新 由于您得到的是403错误代码,请参阅stackoverflow上的回答,并检查您所指向的文件夹的权限

还可以看看这个,因为您正在运行IIS 5.1,它看起来像。。。这可能是相似的


尝试将控制器中的方法从JsonResult更改为ActionResult

 <HttpPost()> _
    Function Create(ByVal collection As ExternalMail) As ActionResult
_
函数Create(ByVal集合作为ExternalMail)作为ActionResult

正如denas所说,您需要检查返回的textStatus和errorThrown生成的变量中的内容,因为您可以返回200 HTTP代码以外的内容,并且代码仍然可以正常执行(这种情况是因为您报告将记录添加到数据库中)。一个200 HTTP代码将触发“success”函数,我现在记不起来了,但是4xx或5xx中的某些东西应该会触发“error”函数

这里要考虑的主要问题是,控制jQueryAjax调用中触发的函数的是Web服务器的HTTP返回代码

将代码更改为:

error: function( jqXHR, textStatus, errorThrown ) {
    console.log(textStatus);
    console.log(errorThrown);
}

告诉我们这些textStatus和errorSprown变量中有什么。

如果在
返回Json(“发生错误”)上设置断点,会发生什么?它命中了吗?不,没有命中。你有没有命中过你的创建方法?是的,它确实命中了创建方法并成功保存了记录,没有引发异常,但它调用了错误回调function@user1490835您使用的是本地IIS服务器还是Visual Studio开发服务器?我已尝试删除JsonRequestBehavior.AllowGet但错误抛出仍然相同。完成上述所有步骤后,仍然报告相同的问题。
success: function(data, txtStatus, jqxhr){ // code here }
error: function( jqxhr, txtStatus, errorThrown) { // code here }
 <HttpPost()> _
    Function Create(ByVal collection As ExternalMail) As ActionResult
error: function( jqXHR, textStatus, errorThrown ) {
    console.log(textStatus);
    console.log(errorThrown);
}