javascript - AJAX 和 JSON 错误处理

标签 javascript jquery ajax json error-handling

我有一个通过 AJAX 将数据提交到外部服务器的表单。

然后验证发送的数据,如果正确,用户就可以进入表单的下一步。

如果数据无效,则服务器返回一个错误,并以 JSON 对象的形式输出。

我可以在 FIDDLER 中看到 JSON 对象。

我的目标是获取 JSON 数据并将其输出到页面上并通知用户。

理想情况下,我会将其作为 AJAX 请求错误处理程序的一部分(见下文)。

这可以实现吗?

附注:

不幸的是,我无法设置演示,因为发布数据的链接仅在我的网络上可用。

还值得指出的是,后端脚本输出的错误实际上存储在数据发布到的链接中。

AJAX 请求:

var setUpVrmData = function() {
    $("#getvrmdata").click(function () {


        var p_vrm = $('#p_vrm').val();

        $.ajax({
            dataType: "JSON",
            type: "POST",
            url: "http://217.35.33.226:8888/l4_site/public/api/v1/BC8F9D383321AACD64C4BD638897A/vdata",
            data: {
                vrm: p_vrm,
            },
            success: function(data) {

                //Empty the dropdown box first.

                $("#p_model").empty();

                appendString = "<option value='none'>-- Select your model --</option>";

                $.each(data['vehiclemodel'], function (k, v) {

                    // += concatenate the string

                    appendString += "<option value='" + k + "'>" + v + "</option>";

                });

                $("#p_model, #ent_mileage").show();

                $('.js-find-my-car').hide();

                $('.js-get-price').show();

                $("#p_model").append(appendString);

                $("#p_model").prop("disabled", false);

                $('#skey').val(data['skey']);

            },

            error: function() {

                console.log("We return error!");

            }
        });

    });

最佳答案

Error 函数将返回一个 XHR 对象,您可以解析该对象以获得您想要的消息。我不知道什么在提供数据,因此根据设置方式,您的里程可能会有所不同。我使用 PHP 和 C# 并写入控制台来完成此操作,但在这两种情况下我都能够控制返回的数据。

我使用了这篇文章:http://encosia.com/use-jquery-to-catch-and-display-aspnet-ajax-service-errors/作为起点。

您需要更新:

error: function() {
   console.log("We return error!");
        }

error: function(xhr, status, error) {
     console.log("We return error!");
        }

在 Firebug 中设置一个断点来检查是否传递了 XHR 对象,如果没有传递,则需要找到一种方法来获取它。。你提到你可以在 fiddler 中看到 JSON,它应该可供你使用。如果是,只需使用文章中提出的 eval 就可以了。如果没有,您将不得不去弄清楚如何获得它,具体取决于您的平台难度会有所不同。

需要注意的一些事情,eval 很困惑,可能会给您带来麻烦。在我这样做的情况下,我删除了生产中的评估。

此外,从 jQuery 1.8 开始,success errorcomplete 已被弃用。如果您计划将来更新 jQuery,请使用 done failalways

jQuery API 引用,供引用。

http://api.jquery.com/jquery.ajax/

关于javascript - AJAX 和 JSON 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24351708/

相关文章:

javascript - Ext.form.FormPanel 和表单提交

javascript - 要动画的元素的初始状态

JavaScript slider 插件 MightySlider - 需要延迟解决方法

javascript - 将类添加到 div 后 DOM 没有更新?

javascript - 使用 javascript 迭代数组

javascript - 是否可以使用 JavaScript 来跟踪过去 24 小时内的页面浏览量?

php - $.ajax 不会删除带有复选框的多个表行

javascript - React - 将 Prop 映射到 react 图像的状态

javascript - jQuery 验证和提交表单

javascript - 如何在 JS 中遍历 JSON