JQuery проблема с тайм-аутом - PullRequest
0 голосов
/ 27 января 2009

Я обнаружил проблему с использованием тайм-аута JQuery, у меня есть страница со скриптом, он установил таймаут и ожидание ответа от сервера. Проблема в том, что тайм-аут должен выполнять, короче говоря, это «бездействие». Я думаю, что сценарий не прерывает соединение с сервером и ждет ответа сервера, потому что на стороне сервера соединение включено в течение 10 секунд (но время ожидания установлено 5 секунд). Я вижу эту проблему, когда сервер работает с другим доменным именем, чем клиент, тогда как когда сервер и клиент работают локально, такой проблемы нет.

У вас есть идея, потому что эта ошибка произошла или как закрыть соединение Script?

// client 

$.ajax({

    type: "GET",

    url: "some.php",

    data: "name=John&location=Boston",

    timeout: 5000,

    success: function(msg){

        alert( "Data Saved: " + msg );

    },
    error: function(request, errorType, errorThrown){

        alert("opppsssss .... ");
    }
});

и код сервера:

//some.php

< ?

//simulate long task

sleep(10); //sleep 10 seconds

//send response

echo "some test data";

? >

С наилучшими пожеланиями

Доменико

1 Ответ

3 голосов
/ 28 января 2009

Вы делаете это задом наперед, судя по всему. Вы установили тайм-аут на 5000 миллисекунд (5 секунд), поэтому, если серверный код отвечает дольше 5 секунд, он истекает. Вы спите (10); который спит в течение 10 секунд, что в два раза дольше указанного времени ожидания. Способ исправить это можно сделать следующим образом:

// client 
$.ajax({
    type: "GET",
    url: "some.php",
    data: "name=John&location=Boston",
    timeout: 10000,

    success: function(msg){
        alert( "Data Saved: " + msg );
    },
    error: function(request, errorType, errorThrown){
        alert("opppsssss .... ");
    }
});

И код сервера:

//some.php
< ?
    //simulate long task
    sleep(5); // sleep 5 seconds!
    //send response
    echo "some test data";
? >

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...