【问题标题】:Response handling of an AJAX GET request without data无数据的 AJAX GET 请求的响应处理
【发布时间】:2018-02-21 17:15:02
【问题描述】:

我被困在一些相当简单的事情上。我有一个简单的 AJAX GET 请求函数,我需要处理响应处理。它没有发送任何数据,数据只是通过 GET url 处理。不幸的是,我从来没有在没有数据的情况下发出过,虽然我的响应成功地带回了 JSON 响应,但如果响应没有任何错误,它不会做任何应该做的事情。

这是我的脚本:

 <script type="text/javascript">
        $(document).on('click', '#pullDetails', function() {
            $.ajax({
            type:'GET',
            url: 'https://webservices.rrts.com/TrackWebApi/api/values/'+$('input[name=proNumber]').val(),
            success: function(response) {
                    $('.errorTitle').addClass('hidden');
                    $('.errorContent').addClass('hidden');

                    if ((response.errors)) {
                        setTimeout(function () {
                            toastr.error('Validation error - Check your inputs!', 'Error Alert', {timeOut: 5000});
                        }, 500);

                        if (data.errors.title) {
                            $('.errorTitle').removeClass('hidden');
                            $('.errorTitle').text(data.errors.title);
                        }
                        if (data.errors.content) {
                            $('.errorContent').removeClass('hidden');
                            $('.errorContent').text(data.errors.content);
                        }
                    } else {
                            $('#carrierReturnData').removeClass('hidden');
                            $('#carrierReturnData').html(Shipment.Origin.Name);


                    }
                },
            });
        });
</script>

具体来说,在靠近底部的 ELSE 下方,remove 类不起作用,所以我知道脚本一定认为发生了错误......

响应数据(其中一些是这样的):

SearchResults   […]
   0    {…}
    SearchItem  ----9
    DisplayType 0
    Shipment    {…}
       DRAvail  false
       ProNumber    -----9
       PickupNumber Not Found
       CustomerNumber   ----3
       BillToAccount    ----34

更新

更新

更新

【问题讨论】:

  • responsespecific 值是什么,当它从您的响应处理程序返回时?你的浏览器开发者控制台有错误吗?您确定您的响应处理程序正在被触发吗?
  • 我想您需要更具体地使用以下条件 - response.errors - 因为 else 语句中的代码没有被执行。正如@cale_b 指出的那样,查看response 的值会很有帮助。
  • 我已经更新了从 GET 收到的响应。但是,我应该指出,我不确定将什么放在响应的位置。通常我只有过去遇到 AJAX 的 data.errors,但这并没有发送“数据”。
  • 我仍然没有在您的回复中看到 errors 的定义。
  • 对,我怀疑我会看到任何错误,但我的问题是如何将响应错误集成到这个特定的 GET 响应中。

标签: jquery json ajax response


【解决方案1】:

基于 cmets。您可以这样处理 ajax 请求错误。

 $.ajax({
    type:'GET',
    url: 'https://webservices.rrts.com/TrackWebApi/api/values/'+$('input[name=proNumber]').val(),
    success: function(response) {
        $('.errorTitle').addClass('hidden');
        $('.errorContent').addClass('hidden');

        $('#carrierReturnData').removeClass('hidden');
        $('#carrierReturnData').html(Shipment.Origin.Name);
    },
    error: function(request, status, error) {
        // Do stuff with the errors
    }
});

供参考,jQuery $ajax

【讨论】:

  • 我采纳了你的建议,为方便起见,我添加了“alert('hello!');”有错误的东西在哪里。不幸的是,虽然我得到了成功的回应,但它提醒我“你好!”这意味着它仍然认为响应(如上面我的问题所示)是一个错误......
  • 尝试输出返回的数据:request、error等
  • 警报(请求); - 返回 [object Object], alert(status);返回“错误”和警报(错误); - 返回空白
  • 记录到控制台,这样你就可以实际查看内容了。
  • 查看我对上述问题的更新。我从来没有见过这样的回应,所以我很感激任何想法......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
  • 2021-12-02
  • 2018-04-12
  • 2023-04-06
  • 2015-04-14
相关资源
最近更新 更多