2013-05-23 3 views
1

У меня есть очень глупый начинающий Jquery вопрос, даже если бы я видел много подобный вопрос здесь:Доступ к детали JSON ответ Аякса

От PHP с AJAX Я посылаю это:

public function to_json() { 
    return json_encode(array('test_id' => 'test_value')); 
} 

В успех часть Jquery файла я ставлю:

function(data) { 
    alert(data); 
} 

И это показывает, что это в окне предупреждения:

{"test_id":"test_value"} 

Что хорошо, я думаю, но если бы я изменить функцию на это:

function(data) { 
    alert(data.test_id); 
} 

я получил:

undefined 

Что мне не хватает?

ответ

0

Что мне не хватает?

Чтобы задать заголовок ответа Content-Type HTTP для application/json в вашем PHP скрипт:

header('Content-Type: application/json'); 

Или установить параметр dataType в json на клиенте:

$.ajax({ 
    url: '/foo.php', 
    dataType: 'json', 
    success: function(data) { 
     alert(data.test_id); 
    } 
}); 

Первый является предпочтительным потому что таким образом ваш серверный скрипт правильно указывает клиенту тип контента, который он использует. И jQuery достаточно умен, чтобы использовать этот заголовок ответа и автоматически анализировать ответ с сервера, прежде чем подавать его на обратный вызов success.

+0

Спасибо большое, второе решение работало, так или иначе, первый не сделал. Должен ли я помещать информацию заголовка в специальное место? Я положил его в начало функции файла PHP, аакс-вызовов. –

0

вам нужно разобрать его, как это:

function(data) { 
    var obj = $.parseJSON(data); 
    alert(obj.test_id); 
} 
0

Ни один из ответов, опубликованных до сих пор, не работал для меня.

Это то, что я должен был сделать, чтобы заставить его работать:

$.ajax({ 
    url: '/foo.php', 
    success: function(data) { 
     var json = data.responseJSON; 
     alert(json.test_id); 
    } 
}); 
Смежные вопросы