Получить несколько переменных из вызова AJAX в jQuery

У меня есть файл PHP, который запрашивает шесть строк из базы данных. Я использую вызов ajax.

Я хочу, чтобы эти шесть строк (несколько столбцов) были переданы в мой основной файл. Мне не удалось найти способ получить эти значения на моей главной странице, кроме как разместить их в формате html в файле запроса и разместить это в виде таблицы на моей главной странице.

Я не хочу, чтобы они были на странице в виде простой таблицы для всеобщего обозрения.

Так что не так:

success: function(html) {
    $("#display").html(html).show();
}

Сейчас мне всегда нужно шесть рядов, но позже можно будет добавить больше.

Одна из моих идей заключалась в том, чтобы опубликовать ее как одну длинную строку и загрузить ее в переменную, а затем прочитать, используя explode или что-то подобное. Не уверен, что это хороший способ сделать это ...

Я в основном прошу идеи расширить свой кругозор.

Я все еще изучаю JavaScript и jQuery, поэтому лучше получить хорошее объяснение, чем блок рабочего кода.

Заранее спасибо!

Попросите php вернуть массив json, содержащий объекты, представляющие ваши шесть строк, а затем пусть jQuery принимает ответ json.

Federico klez Culloca 05.04.2018 17:03

Когда мы делаем запросы AJAX, мы обычно делаем это для получения только данные, необходимого на странице. Похоже, вы отправляете обратно полный файл HTML. Как говорит Федерико, вы можете просто повторить данные json_encoded(), а затем обработать данные в браузере с помощью JS и jQuery.

Randy Casburn 05.04.2018 17:09

Все, что вы получаете от сервера, в основном представляет собой набор символов. Однако вы можете использовать языки разметки, такие как JSON или YAML, для отправки упорядоченных данных.

Jonas Wilms 05.04.2018 17:10
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
633
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Делайте то, что Фредерико говорит выше. Верните 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?

Kerwin Sneijders 05.04.2018 19:26

Да, вы можете сохранить возврат объекта. И вы можете использовать что угодно в этом объекте в любом месте вашего html-документа. Если у вас есть конкретика, я могу добавить несколько примеров.

IncredibleHat 05.04.2018 19:28

Большое спасибо за помощь, все очень хорошо объяснено! Я заставил его работать после того, как немного поигрался с объектами javascript ... Еще раз спасибо! Заслуженный ответ: D

Kerwin Sneijders 05.04.2018 23:22

Другие вопросы по теме