Jquery 打印AJAX响应数据(来自错误返回)

Jquery 打印AJAX响应数据(来自错误返回),jquery,ajax,get,Jquery,Ajax,Get,我有一个AJAX请求脚本,无论出于何种原因,它返回数据,但也认为响应是错误的。我已经联系了API的创建者,他们正在调查,但目前,我正在尝试为响应创建一个解决方案 这是我的剧本: <script type="text/javascript"> $(document).on('click', '#pullDetails', function() { $.ajax({ type:'GET',

我有一个AJAX请求脚本,无论出于何种原因,它返回数据,但也认为响应是错误的。我已经联系了API的创建者,他们正在调查,但目前,我正在尝试为响应创建一个解决方案

这是我的剧本:

 <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(data) {
                    $('.errorTitle').addClass('hidden');
                    $('.errorContent').addClass('hidden');

                    $('#carrierReturnData').removeClass('hidden');
                    $('#carrierReturnData').html(Shipment.Origin.Name);
                },
                error: function(request, status, error) {
                    console.log(request);
                    console.log(status);
                    console.log(error);
                    $('#openInvoicesOverlay').html('');
                    $('#openInvoicesOverlay').removeClass('overlay');
                    $('#freightBillDetails .box-body').html(data.SearchResults[0].SearchItem);
                }
            });
        });
</script>

$(文档).on('click','#pullDetails',函数(){
$.ajax({
类型:'GET',
网址:'https://webservices.rrts.com/TrackWebApi/api/values/'+$('input[name=proNumber]')。val(),
成功:功能(数据){
$('.errorTitle').addClass('hidden');
$('.errorContent').addClass('hidden');
$('#carrierReturnData').removeClass('hidden');
$('#carrierReturnData').html(shipping.Origin.Name);
},
错误:功能(请求、状态、错误){
控制台日志(请求);
控制台日志(状态);
console.log(错误);
$('#openInvoicesOverlay').html('';
$('openInvoicesOverlay').removeClass('overlay');
$('#freightBillDetails.body').html(data.SearchResults[0].SearchItem);
}
});
});
现在,成功部分不起作用,即使数据已成功返回到GET请求。因此,“error:function…”就是工作的地方(即使不应该)

因此,基于此返回JSON:

如何打印详细信息?与返回的SearchItem字段相同。该脚本确实适用于.html和.remove类,但error:function的.html部分不起作用,这可能是因为我正在尝试打印响应数据

更新和响应

更新新的响应 失败

对象{详细信息:{“SearchResults\”:[{“SearchItem\”:“*****\”,“DisplayType\”:0,\“Shipping\”:{“DRAvail\”:false,\“ProNumber\”:\“****”,“PickupNumber\”:“Not Found\”,“CustomerNumber\”:“****”,“BillToAccount\”:“****”,“BillToNumber\”,“BilltonNumber\”:null,\“BOLNumber\”:“收到的”:“收到的”:“false”,请参见下文订单编号\“:空、\“操作状态\“:空、\”状态\“:空、\”检查可用\“:假、\”生产时间\“:“2018-02-13T00:00:00\”、\“交货日期\“:“0001-01-01T00:00:00\”、\“规格1\”:“住宅区CFA 1\”、“规格2\:“所需提升门DELY\”、“规格3\:“任何呼叫:客户服务”、“总金额:”、“总金额:”、“Scac\”目前,381岁,“AppTDate时间”以下:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,“CA\”,“PostalCode”\“:”92707“,”收货人“,”姓名“:”莱恩·弗兰克“,”地址1“:”783亨廷顿博士“,”地址2“:”商业“,”城市“,”高地牧场“,”州“:”CO“,”邮政编码“:”80126“,”皮卡顶部“:”空,“原始终端“:”,“{”终端名称“:”商业“,”作者“:”假发票“,”假发票,,”\“CanViewPOD\”:true、\“CanViewWii\”:false、\“FBAUserID\”:\“\”、\“SharedSecret\”:\“\”、\“UserAuthenticated\”:false、\“WebUser\”:{“Site\”:null}、\“AccountGroup\”:{“GroupCode\”:null、\“MasterAccountCollection\”:null}、\“PermissionMask\”:0、\“ManualAccount\”:false}}

更新
您的ajax是成功的,因为它返回json而不是ajax错误响应,但是您的语法不正确

 success: function(data) {
$('#carrierReturnData').html(Shipment.Origin.Name);
},
装运未定义

您需要的是返回成功回调,即
data

这意味着
数据
==屏幕截图中的JSON

 success: function(data) {
$('#carrierReturnData').html(data['SearchResults'][0]['Shipment']['Origin']['Name']);
},
更新:

您的数据是跨域的,您需要使用
jsonp
而不是
json
。但是因为您需要知道回调首先在哪里(需要等待站点所有者回答),所以请不要强制跨域使用ajax。我真的更喜欢这种方式

index.html

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script>
 $(function() {
         $.ajax({
            type:'POST',
            url: 'http://localhost/process.php',
            data: {num: $('input[name=proNumber]').val()},
            dataType: 'json',
            success: function(data) {
                if(data.SearchResults != undefined) console.log('success');
                else console.log('failed');
                console.log(data);
            },
            error: function(data) {
                console.log('error');
                console.log(data);
            }
        });
    });

</script>

$(函数(){
$.ajax({
类型:'POST',
网址:'http://localhost/process.php',
数据:{num:$('input[name=proNumber]')。val(),
数据类型:“json”,
成功:功能(数据){
if(data.SearchResults!=未定义)console.log('success');
else console.log('failed');
控制台日志(数据);
},
错误:函数(数据){
console.log('error');
控制台日志(数据);
}
});
});
process.php

<?php
$json = file_get_contents('https://webservices.rrts.com/TrackWebApi/api/values/'.$_POST['num']); //or you can use curl
echo $json;
?>

更新2:

我将您的json复制到json托管服务


$(函数(){
$.ajax({
网址:'https://api.jsonbin.io/b/5a8ede2aa671850974694f16/2',
键入:“GET”,
数据类型:“json”,
成功:功能(数据){
/*
结果:
忽略此->AuthUser:Object{ManualAccount:false,PermissionMask:0,UserAuthenticated:false,…}
您的JSON->详细信息:数组[{…}]
忽略此->\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
所以我们需要做以下工作
*/
if(data.details.SearchResults!=未定义){
console.log('success');
console.log(data.details.SearchResults[0].shipping.Origin.Name);//结果:ATLAS INTL
$('#carrierReturnData').html(data.details.SearchResults[0].shipping.Origin.Name);
}否则{
console.log('failed');
控制台日志(数据);
}
},
错误:函数(数据){
console.log('error');
控制台日志(数据);
}
});
})

从技术上讲,这是不成功的。日志报告了“错误”,这就是为什么我说这是他们这边的问题。但是,根据你的建议,我得到了“typeError:data is undefined”。我尝试了你的建议,在我上面编辑的问题中得到了新的回答。但是我应该提到的是,数据是按照上面的方式返回的,所以技术性很强