为什么偶尔的ajax请求会返回错误响应?

时间:2011-12-24 01:18:20

标签: jquery ajax json

这个错误令我非常沮丧,我希望SO的优秀人员可以帮助至少给我一些关于要寻找什么的线索。我已经使用ajax建立了一个订单跟踪系统,它可以处理95%的请求。但是有些正在运行错误响应中的函数..例如:

function trackIt(){
    $j("#result").html(" ");
    $j("resultTwo").html(" ");
    var ordervalue = $j('#order').val();
    if ((ordervalue.length == 9) || (ordervalue.length == 5)) {
        $j.ajax({
            type: 'GET',
            url: '<?php echo Mage::getBaseUrl('web') ?>/index/trackOrder',
            data: 'increment_id='+ ordervalue,
            dataType: 'json',
            beforeSend: function() {
                $j('#result').html('<img src="loading.gif" alt="" />');
            },
            success: tracker,
            error : function (xhr, status, error) {
                wtf();
            }
        });
    } else { return false; };
};

我可以在firebug中看到json数据正在返回它应该但是对于几个跟踪数字它正在运行wtf函数?! WTF?我还能找到什么?为什么考虑某些请求出错?我能找到什么?我如何提出这些要求有什么问题吗?如果您需要更多信息或任何帮助我帮助我,请告诉我。

提前感谢您的帮助..我想要圣诞节的一切都是为了这个该死的东西!

编辑:

以下是未返回的JSON响应示例。

{"Debug":"3","Status":"Closed","Date":"2011-12-15T22:53:09","Description": "<div class=\"orderProduct\">Sector 9 J-Bay Bamboo Longboard  - Color: ASSORTED, Size: 10</div><div class=\"orderProduct\">Kahuna Haka Cruiser Skateboard  - Color: ASSORTED, Size: ONE SIZE</div><div class=\"orderProduct\">Santa Cruz Primo Pintail 9.9" Longboard Cruiser  - Color: ASSORTED, Size: ONE SIZE","ProcessorId":"0","Sku": "16389400070018<br>17748800070018<br>18777606960012","Method":"Free Shipping","ShippingCo":"UPS Ground","Track":""}

这是一个正在返回的例子。

{"Debug":"1","Status":"Closed","Date":"2011-12-15T22:33:32","Description": "<div class=\"orderProduct\">Supra Dixon Black Canvas Shoe  - Color: BLACK, Size: 12","ProcessorId":"0","Sku": "16086200010046","Method":"Ship To Store - In Store Pickup","ShippingCo":"Ship To Store - In Store Pickup","Track":"1Z68W0376038395"}

一个明显的区别是调试值,遗憾的是我不知道这意味着什么。

1 个答案:

答案 0 :(得分:1)

导致错误的JSON示例是无效的JSON。就在这附近:

>Santa Cruz Primo Pintail 9.9" Longboard Cruiser  - Color:

它出错了。

我不确定它应该是什么,但我认为JSON解析器因为JSON错误而抛出错误。