Как получить массив с помощью AJAX, который вызывает сценарий PHP?

Так что, в основном, я делаю автоматическое заполнение текстового поля, используя AJAX, чтобы получить информацию из скрипта PHP, который вызывает функцию C.

Вот что я нашел в теории: (Предполагая получение только одного значения)

$(document).ready(function(){
window.setInterval(function(){
var ajaxurl = 'php/portserverclient.php',
$.post(ajaxurl, NULL, function (response) {
$('#v1').val(response);
});
}, 5000);
});

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

Просто чтобы быть ясно, мой скрипт PHP использует echo вывести свою информацию. Я бы предпочел выводить в более «стандартном» виде, например, в V1 = 120, V2 = 120 и т. Д., Но PHP для меня новичок, и я сейчас его изучаю. Спасибо.

РЕДАКТИРОВАТЬ:
Просто чтобы было понятнее

Будет ли что-то вроде этой работы?

$(document).ready(function(){
window.setInterval(function(){
var ajaxurl = 'php/portserverclient.php',
$.post(ajaxurl, NULL, function (response[]) {
$('#v1').val(response[0]);
$('#v2').val(response[1]);
$('#v3').val(response[2]);
});
}, 5000);
});

1

Решение

С вами echo на стороне PHP ответом может быть только строка.
Но если эта строка сформирована как допустимый JSON, вы сможете использовать ее так, как пожелаете.

Итак, на стороне PHP, убедитесь, что формат json действителен:

$array = [120,340,800];

echo json_encode($array);

Затем в JS … Вы получили строку … Вы должны проанализировать ее, чтобы сделать ее массивом.

$(document).ready(function(){
window.setInterval(function(){
var ajaxurl = 'php/portserverclient.php',
$.post(ajaxurl, NULL, function (response[]) {
var responseArray = JSON.parse(response);
$('#v1').val(responseArray[0]);
$('#v2').val(responseArray[1]);
$('#v3').val(responseArray[2]);
});
}, 5000);
});
1

Другие решения

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

    $.post(ajaxurl, NULL, function (response) {
for (var i = 0; i < response.length; i++) {
$("#v" + (i + 1)).val(response[i]);
}
});

Это отобразит каждый индекс массива, возвращенного из конечной точки JSON, в соответствующее текстовое поле.

Если JSON, возвращаемый из вашей конечной точки, является допустимым массивом JSON, ваша переменная ответа уже должна быть массивом!

0

Вы можете отформатировать строку в php, чтобы она возвращала объект json, например

echo '{ "v1": "something", "v2": "some other thing", "v3": "blah blah" }';
0

Отправьте ваш массив как json:

echo json_encode(array($value1, $value2, $value3));

JS

$.post(ajaxurl, NULL, function (response) {
// selectors in same index order as response array
$('#v1, #v2, #v3').val(function(i){
return response[i];
});
},'json');
0

Самый простой (для меня) способ связи между JavaScript и PHP — это JSON.
Таким образом, ваш PHP-скрипт должен генерировать ответ в этом формате.

Код PHP

// At the top of your PHP script add this
// that will tell to your browser to read the response as JSON
header('Content-Type    : application/json', true);
// Do your logic to generate a PHP array
echo json_encode($yourArray);

HTML код

<div class="someClass"></div>

Javascript код

var container = $('.someClass');
$.post(ajaxurl, NULL, function (response) {
console.log(response); // for debuging
for (let i = 0; i <= response.length; i++) {
let myItem = response[i];
container.append('<p>' + item + '</p>');
}
});

Чистее всего динамически генерировать p-элементы, потому что вы не знаете, сколько результатов ваш PHP-файл вернет вам.

Я не уверен в коде javascript, возможно, вы получили строку json, которую необходимо преобразовать в массив Javascript

Прежде чем связать ваш javascript с php-скриптом, попробуйте позвонить почтальону (или другому http-клиенту), чтобы убедиться, что ваш веб-сервис работает как обычно

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector