Ajax / jQuery для PHP и обратно?

У меня есть вызов ajax, сделанный с помощью jQuery, примерно так:

$.ajax({ type: "POST", url: ajaxurl, data: data, success: function(response){ alert(response); } }); 

Я получаю данные от PHP следующим образом:

 $data_array = get_data(); foreach($data_array as $data) { echo $data; } 

PHP для замедления

Вызов функции данных PHP медленный, потому что он получает очень много данных из базы данных, может получать изображения, делать некоторые звонки json и другие медленные вещи.

Один цикл в то время

Поэтому мне нужно, чтобы PHP-код выполнял один раунд, затем Javascript, а затем выполнял следующий цикл в цикле.

Не один способ решить эту проблему?

Это может быть несколько способов сделать это. Какой из них предпочтительнее? На ум приходит Javascript foreach-loop, JSON и глобальные переменные Javascript.

Вы можете установить тип возврата в своей функции ajax как xml или json, а затем вернуть массив в любом из этих типов. Я чувствую, что JSON является предпочтительным для вашего решения.

Я немного против хранения фактических изображений в базе данных. Я предпочитаю только сохранить для них уникальную ссылку, а затем вернуть это вместо фактического изображения. Это ускорит запрос до справедливой. Я согласен с mad_programmer, что JSON js будет предпочтительнее для вашей ситуации.

Вы можете манипулировать своим запросом, чтобы сделать ограничение. Итак, что-то вроде:

  var total_count = ajax_get_sql('select statement with count'); var curr_count = 0; var set_number = 10; var select_statement_without_limit = 'statement'; setTimeout('fetch_data()',0); ... function fetch_data() { if(curr_count < total_count) { ajax_get_sql(select_statement_without_limit with limit appended); curr_count = curr_count + set_number; setTimeout('fetch_data()',0); } } 

При всех ваших вызовах ajax установлено ожидание ответа вместо продолжения. Я бы сохранил логику sql в PHP, но использую javascript для запроса сервера много раз. Это не даст вашему JS-скрипту давать длительные ошибки выполнения. Я действительно не принимал во внимание манипуляции с данными, но вы, вероятно, можете это понять!