来自AJAX的随机空请求响应,导致JSON parsererror

时间:2018-08-24 21:06:26

标签: javascript json ajax

我遇到一个困扰我的问题。通过AJAX JSON请求连接数据库时,有时(随机)会返回一个空的XML字符串,而不是预期的JSON。 JavaScript函数如下所示:

function MyFunction(location_list){

var dictTable = {}
for (n in location_list) {
    var restRequestURL = '/geoserver/rest/api/v1/locations/'+location_list[n];
    $.ajax({
        url : restRequestURL,
        dataType: "json",
        data: {},
        tryCount : 0,  // Tried this as a workaround
        retryLimit : 3,  // Tried this as a workaround
        success: function(response){
            dictTable[response.typeString] = anotherFunction(response);
            if (Object.keys(dictTable).length == location_list.length) {
                yetAnotherFunction(dictTable, location_list);
            }
        },
        error: function(xhr, textStatus, errorThrown ) {
                    // Brute force workaround
                    console.log(textStatus);
                    if (textStatus == "parsererror") {
                        this.tryCount++;
                        if (this.tryCount <= this.retryLimit) {
                            //try again
                            $.ajax(this);
                            return;
                        }
                        return;
                    }
                    if (xhr.status == 500) {
                        console.log("Server Error 500...");
                    } else {
                        console.log(xhr.status);
                    }
                }
    })
}
}

大多数请求中都正确返回了JSON,并且一切都按预期进行(触发了otherFunction和yetAnotherFunction)。但是在某些情况下(十分之一),请求将返回一个空XML对象,而不是预期的JSON。

因此,AJAX调用由于“ parsererror”而失败,因为它期望使用JSON但得到一个空的XML。因此,我所有的请求都返回一个成功的代码(200,状态为OK),但是响应有时是不正确的,好像数据库没有时间响应或混淆了所有事情,只是说“无论如何,您都可以在这里”

错误数据对象:

{
  "readyState": 4,
  "responseText": "",
  "status": 200,
  "statusText": "OK"
}

Firefox开发者控制台中的“网络”标签(文件120是在这种情况下使用解决方法两次尝试的特定请求):

Status   Method   File  Domain  Cause  Type  Transferred  Size
200       GET     120   domain   xhr    xml    145 B      0 B
200       GET     120   domain   xhr   json    1.08 KB   2.77 KB   

我必须说,我对所发生的事情不知所措。您是否可以建议一种方法来解决此问题,或者是否看到任何明显的原因会导致这种奇怪的行为?

0 个答案:

没有答案