У меня есть файл PHP, который запрашивает шесть строк из базы данных. Я использую вызов ajax.
Я хочу, чтобы эти шесть строк (несколько столбцов) были переданы в мой основной файл. Мне не удалось найти способ получить эти значения на моей главной странице, кроме как разместить их в формате html в файле запроса и разместить это в виде таблицы на моей главной странице.
Я не хочу, чтобы они были на странице в виде простой таблицы для всеобщего обозрения.
Так что не так:
success: function(html) {
$("#display").html(html).show();
}
Сейчас мне всегда нужно шесть рядов, но позже можно будет добавить больше.
Одна из моих идей заключалась в том, чтобы опубликовать ее как одну длинную строку и загрузить ее в переменную, а затем прочитать, используя explode или что-то подобное. Не уверен, что это хороший способ сделать это ...
Я в основном прошу идеи расширить свой кругозор.
Я все еще изучаю JavaScript и jQuery, поэтому лучше получить хорошее объяснение, чем блок рабочего кода.
Заранее спасибо!
Когда мы делаем запросы AJAX, мы обычно делаем это для получения только данные, необходимого на странице. Похоже, вы отправляете обратно полный файл HTML. Как говорит Федерико, вы можете просто повторить данные json_encoded(), а затем обработать данные в браузере с помощью JS и jQuery.
Все, что вы получаете от сервера, в основном представляет собой набор символов. Однако вы можете использовать языки разметки, такие как JSON или YAML, для отправки упорядоченных данных.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Делайте то, что Фредерико говорит выше. Верните json из своего php и войдите в jQuery с помощью вызова ajax. Примерно так: http://makitweb.com/return-json-response-ajax-using-jquery-php/. Просто пропустите шаг № 3 и сделайте то, что вам нужно, с полученными данными на шаге № 5, если вам не нужно печатать их в формате html.
Сторона PHP
Это очень простой процесс, за который вы можете ударить себя, ухватившись за него;) Но как только вы это сделаете, он откроет мир возможностей, и ваш ум сойдет с ума от идей.
На первом этапе вы хотите настроить свои данные, которые вы будете возвращать вызову ajax. Если у вас есть несколько строк с несколькими полями, у вас будет что-то в этих строках (может исходить из базы данных или назначений, что угодно):
$rows = [];
$rows[] = array('thing'=>'value 1','something'=>'blah','tertiary'=>'yup');
$rows[] = array('thing'=>'value 2','something'=>'yadda','tertiary'=>'no');
$rows[] = array('thing'=>'value 3','something'=>'woop','tertiary'=>'maybe');
Теперь, чтобы передать эти строки данных в ajax, вы выполняете одну простую операцию:
echo json_encode($rows);
exit; // important to not spew ANY other html
Это все, что вам действительно нужно делать со стороны PHP. Итак, что же нам делать? Итак, мы взяли многомерный массив данных (обычно представляющий то, что поступает из базы данных), закодировали его в формате JSON и вернули. Вышеупомянутое будет выглядеть в вашем браузере так:
[{"thing":"value 1","something":"blah","tertiary":"yup"},
{"thing":"value 2","something":"yadda","tertiary":"no"},
{"thing":"value 3","something":"woop","tertiary":"maybe"}]
Он будет обрабатывать все экранирование и кодирование utf8 и других специальных символов. Радости json_encode()!
Сторона JAVASCRIPT
Эта сторона не так сложна, но есть кое-что, что нужно понять. Во-первых, давайте приведем ваш вызов jquery ajax в форму:
<div id = "rows"></div>
<script>
$("#your-trigger").on('click',function(e){
e.preventDefault(); // just stops the click from doing anything else
$.ajax({
type: "POST",
url: 'your_ajax.php',
data: { varname: 'value', numrows: '6' },// your sent $_POST vars
success: function(obj) {
// loop on the obj return rows
for(var i = 0; i < obj.length; i++) {
// build a div row and append to #rows container
var row = $('<div></div>');
row.append('<span class = "thing">'+ obj[i].thing +'</span>');
row.append('<span class = "details">'+
obj[i].something +' '+ obj[i].tertiary
+'</span>');
$("#rows").append(row);
}
},
dataType: 'json' // important!
});
});
</script>
Итак, давайте объясним несколько ключевых моментов.
Самым важным является dataType: 'json'. Это сообщает вашему вызову ajax ОЖИДАТЬ, что строка json превратится в объект. Этот объект становится тем, что вы определяете в функции успеха arg (которую я назвал выше obj).
Теперь, чтобы получить доступ к каждой конкретной переменной данных каждой строки, вы рассматриваете ее как объект. Массив строк, в каждой строке есть переменные, названные так, как вы их назвали в PHP. Здесь у меня есть пример for для циклического перебора массива строк.
Например, obj[0].thing относится к первой строке переменной thing. Использование i позволяет вам просто автоматически просматривать все строки на основе length объекта. Там есть несколько удобных вещей.
Вы можете создать любой HTML-код из возвращенного объекта и значений. Я только что показал, как настроить примерную строку <div><span class = "thing"></span><span class = "details"></span></div>. Вы можете использовать таблицы или более сложные настройки и код.
Чтобы сохранить данные, возвращаемые вашим вызовом ajax, вы можете сохранить их в локальной или глобальной переменной, например так:
<script>
var globalvar;
$....('click',function(e){
var localvar;
$.ajax(.... success: function(obj){
....
localvar = obj;
globalvar = obj;
....
});
});
</script>
Спасибо за подробное объяснение! Я должен был сказать, что очень хорошо знаком с PHP, но в любом случае спасибо. Однако у меня есть вопрос: можно ли сохранить значения в массив или что-то еще, а затем вставить их в уже существующий HTML?
Да, вы можете сохранить возврат объекта. И вы можете использовать что угодно в этом объекте в любом месте вашего html-документа. Если у вас есть конкретика, я могу добавить несколько примеров.
Большое спасибо за помощь, все очень хорошо объяснено! Я заставил его работать после того, как немного поигрался с объектами javascript ... Еще раз спасибо! Заслуженный ответ: D
Попросите php вернуть массив json, содержащий объекты, представляющие ваши шесть строк, а затем пусть jQuery принимает ответ json.