简体   繁体   中英

Ajax Request Randomly Fails

whats hapenning is that my ajax request randomly fails, and I don't know why.

I've been testing only in chrome and when the error callback gets called the controller returns successfully so i think that the problem is not in the server side.but i'm not sure. the responseText error in chrome is blank so i have no tip to troubleshoot.

This is My Ajax call m I doing somehting wrong, I'm Clueless?

$.ajax({
    type: "GET",
    url: url,
    data: { postalCode: postalCode },
    dataType: "json",
    success: function (response) {
        if (isPostBack != 'True') {
            switch (response["Code"]) {
                case "-1":
                    alert('msg 1.');
                    break;
                case "0":
                    alert('msg 2.');
                    break;
                case "1":
                    alert('msg 3.');
                    break;
                case "2":
                    alert('msg 4.');
                    break;
                default:
                    alert('unexpected value.');
            }
        }
    }
});

if not what could be the most likely causes? I'm Developing Asp.NET MVC for Sitefinity, and I only detect this issue in this ajax request.

UPDATE:

I've detected in the browser that the request is being cancelled. it arrives successfully to the server and is cancelled during the code execution. it is not cancelled in a specific line because I commented the lines to find which one is causing troubles but it was cancelled regardless of the code line. Then I started thinking about timeout and added a timeout. first 3 seconds than 10 seconds. but the problem was still there. this is the request status:

在此处输入图片说明

Suggesting a slight modification:

$.getJSON(url, {"postalCode": postalCode})
 .success(function (response) {
    if (isPostBack != 'True') {
        switch (response.Code) {
        case "-1":
            alert('msg 1.');
            break;
        case "0":
            alert('msg 2.');
            break;
        case "1":
            alert('msg 3.');
            break;
        case "2":
            alert('msg 4.');
            break;
        default:
            alert('unexpected value.');
        }
    }
});

The Problem

I had the ajax request been made from a submit button, which cancelled some of the requests.

I solve it by

  • hiding the submit button
  • creating a button type=button that does the ajax call
  • on success callback i click the hidden button to submit the form values $("#btnsubmit").click();

After this I still had a problem, the first request was always cancelled. The problem was timeout. when I increased the timeout value to 20 seconds it stops from being cancelled. but leads me to another problem.

why it needed 20 seconds in the first ajax request?

Well that will be another Adventure..

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM