Вопрос по ajax, post, javascript, jquery – Как ждать ответа в $ .post jQuery

6

PHP возвращает значение с задержкой в 1-2 секунды. JQuery.post не ожидает ответа.

Как ты думаешь, можно ли решить эту проблему и дождаться ответа?

<code>    $.post( sSource, aoData, function (data) {    
        oCache.lastJson = jQuery.extend(true, {}, data);
        if ( oCache.iCacheLower != oCache.iDisplayStart )
        {
            data.aaData.splice( 0, oCache.iDisplayStart-oCache.iCacheLower );
        }
        data.aaData.splice( oCache.iDisplayLength, data.aaData.length );
         abc(oCache);
        fnCallback(data); 
    },"json" );
</code>

Заметк та же функция с get работает хорошо

<code>    $.getJSON( sSource, aoData, function (json) { 
        /* Callback processing */
        oCache.lastJson = jQuery.extend(true, {}, json);

        if ( oCache.iCacheLower != oCache.iDisplayStart )
        {
            json.aaData.splice( 0, oCache.iDisplayStart-oCache.iCacheLower );
        }
        json.aaData.splice( oCache.iDisplayLength, json.aaData.length );

        fnCallback(json)
    } );
</code>
Может быть, запрос просто не прошел? gdoron
@ gdoron нет, это не так. Я вижу результат через 1-2 секунды в Firebug heron
@ epic_syntax: И, также в Firebug, ваша функция обратного вызова выполняется перед ответом? Я подозреваю, что это не так, и что-то еще не так. Поместите точки останова в код, чтобы увидеть, когда он действительно выполняется. Звонки наalert() также полезны для такой отладки. David
Что ты имеешь в виду под "не ждет ответа"? Я уверен, что так и есть - возможно, вы не получили ответ, который, как вы думаете, вы получили или должны получить? Dave Newton

Ваш Ответ

1   ответ
17

$..ajax и установить для async значение false, чтобы вы могли ждать ответа. Вы можете прочитать больше об этом здесь:http: //api.jquery.com/jQuery.ajax

Так это$.getJSON. Dave Newton
Все сокращенные методы ajax -.load(), .get(), .post(), getJSON() а такжеgetScript() - асинхронны. Таким образом, можно сказать, что все они «ждут ответа сервера». AFAIK, только.ajax() сама, сasynch:false, не асинхронный, но никогда не должен использоваться, так как он поддерживается не всеми браузерами. Beetroot-Beetroot
Так, каково решение? JoeTidee

Похожие вопросы