2013-09-08 4 views
1

Мне нужно указать элементы при поиске. Вместо того, чтобы использовать какой-либо знак загрузки, бесконечный прогресс или что-то еще, в то время как серверный php-скрипт завершает работу, я хотел бы, чтобы результаты отображались, как только они были найдены на сервере.Jquery getScript или ajax в сочетании с php-флешем

PHP боковые швы достаточно легко выполнить только поддельные 10x результат (server.php):

header('Content-type: text/html; charset=utf-8'); 
$i = 0; 
while($i < 10) 
    { 
     ?> 
     $('#resultZone-13').append('<div class="fileline">someresult</div>'); 
     <? 
     flush();ob_flush(); 
     usleep(200000); //0,2s 
     $i++; 

    } 

клиентской, я бы надеялся, что getScript будет работать, но это не так, это то, что я имеют:

$.post('server.php',{}, function(data) 
    { 
    },"script"); 

, но эта комбинация ждет завершения скрипта serveride перед выполнением 10 команд jquery. Как я могу заставить JQuery выполнять команды сразу же после их получения?

Единственная идея, я должен был бы загрузить закадровый IFRAME и попросить, чтобы загрузить страницу server.php внутри этого фрейма, но потом, я застрял внутри этого фрейма ...

ответ

1

Хорошо, я получил эту работу после нескольких выходных дней .. В основном это способ сделать это (Im новый папа!):

Создать невидимый iframe на документе и загрузить в него удаленный файл php. Этот php-файл может очистить некоторый контент javascript до этого iframe, это единственный способ, которым я нашел, чтобы он отображал его последовательно.

Например, я получил этот тест работает:

<? 
header('Content-type: text/html; charset=utf-8'); 
echo '<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>'; 
$i = 0; 
while($i < 10) 
    { 
     ?> 
     <script type="text/javascript"> 

     $(window.parent.document).find('#subfolder13').append('<div class="folderline"><div class="closedfolder" style="margin-left:48px;"></div>Pecq</div>') 

     </script> 
     <? 
     flush();ob_flush(); 
     usleep(200000); //0,2s 
     $i++; 

    } 
?> 

Я не заботиться о большой нагрузке запроса в начале, так как это является точно такой же файл, как кадр вызывающего абонента, так что в 99% случаев этот файл только что кеширован. Если это действительно необходимо, это может быть простой javascript, не меняет идею этого.

1

Вы не можете , вам придется либо ввести socket.io, либо вместо этого использовать $.getScript.

Попробуйте это:

var s = document.createElement('script'); 
s.type = 'text/javascript'; 
s.src = 'test.php'; 
$('head').append(s); 
+0

Даже когда я использую $ .getScript, сценарий выполняется после завершения 2-секундного php-скрипта ... –

+0

Работает ли новый пример? – OneOfOne

+0

Спасибо, но, к сожалению, нет. (он выполняется после генерации страницы server.php) –