PHP: как извлечь ответ массива ajax - PullRequest
1 голос
/ 20 ноября 2010

Я получаю ответ ajax в формате массива с php url. Как извлечь значения ответа массива в jQuery? FYI:

Массив PHP:

$response = array('msg' => 'Hello', 'html' => '<b>Good bye</b>');

Я получаю массив $ response в своем ответе ajax. т.е.

var promo = "promo=45fdf4684sfd";
$.ajax({
    type: "POST",
    url: baseJsUrl + "/users/calc_discount",
    data: promo,
    success: function (msg) { // I am getting $response here as ajax response.
        //alert(msg);

        // Here I want to check whether response is in array format or not. if it is in array format, I want to extract msg here and want to use response array values.
    }
});

Дайте мне знать, ответьте пожалуйста. Спасибо.

Ответы [ 4 ]

8 голосов
/ 20 ноября 2010

Вы должны повторить это $response с json_encode().

Возможно, вам следует установить dataType: 'json' также внутри литерала объекта, который вы отправляете на $.ajax().

Затем вы можете получить к нему доступ с помощью JavaScript, используя оператор точки внутри обратного вызова ...

function(msg) {
    alert(msg.html);
}

Кстати, эта строка ...

$response = array(['msg'] => 'Hello', 'html' => '<b>Good bye</b>');

... не действителен PHP .Снимите скобки с первого ключа.

1 голос
/ 20 ноября 2010

Мое любимое решение для этого - закодировать массив с помощью функции PHP json_encode (), чтобы jquery с радостью его проанализировал.

0 голосов
/ 20 ноября 2010

и если у вас нет контроля над выводом PHP, вы можете использовать другой метод для получения результата.Другое решение использует библиотеку http://phpjs.org/.Здесь вы можете найти множество функций, доступных в JS, а также php.Использование также как и в PHP.Поэтому я чувствую, что если вы получите оттуда json_encode / json_decode и будете использовать его, то это легко решит вашу проблему.

Помните, что вы можете компилировать только нужные вам функции.В вашем случае это json_encode и json_decode.Не нужно скачивать всю библиотеку.URL для компиляции вашей библиотеки: http://phpjs.org/packages/configure

0 голосов
/ 20 ноября 2010

Я предполагаю, что вы имеете в виду ответ JSON, например, такой:

{"msg":"Hello","html":"<b>Good bye<\/b>"}

Это на самом деле нативный объект JS, поэтому вы можете использовать его прямо сейчас так:

success: function(msg){
   alert(msg.msg);
   alert(msg.html);
}

Вы также можете использовать функцию jQuery.each () , чтобы перебрать все свойства объекта JSON, если вам необходимо:

jQuery.each(msg, function(key, val) {
  alert(key + "=" + val);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...