2012-03-07 3 views
2

У меня есть объект JSON, который я возвращаюсь из базы данных. Он отформатирован правильно. Я пытаюсь получить доступ к данным в нем с помощью вызова AJAX. Вот мой AJAX.Как вернуть данные JSON из вызова AJAX

$.ajax({ 
     url: '<?php echo site_url('find_representatives/find_rep_by_address/get_coordinates'); ?>', 
     dataType: 'json', 
     data: '', 
     success: function(data, status, xhr) { 
      alert(data); 
     }, 
     error: function(xhr, status, error) { 
      alert(status); 
     } 
}); 

У меня есть '' в моих данных, потому что я ищу все данные. Я попытался поставить там идентификатор (есть ID в моем объекте JSON, но функция перестала работать, когда я это сделал. Когда я предупреждаю «данные», я получаю объект, но где я предупреждаю «data.id», undefined. «Что я делаю неправильно?» Это мой первый звонок AJAX. URL-адрес действителен. Я проверил.

+0

Вы возвращаете приложение/json в качестве Content-Type? – Daff

+0

Откройте отладчик своего браузера, посмотрите вкладку NET и обнюхайте ответ с сервера. Посмотрите, что вы получаете. –

ответ

1

попробуйте data[0] и посмотрите, что вы получаете в оповещении ... был там, я думаю, это поможет вам

+0

затем попробуйте данные [0] .id – Har

+0

Смотрите комментарий выше. – sehummel

+0

Предполагается, что он возвращает массив, что, похоже, не так. Тем не менее, если данные [0] являются объектом, то что хорошего - это предупреждение? –

0

Заканчивать getJSON.

$.getJSON(<?php echo site_url('find_representatives/find_rep_by_address/get_coordinates'); ?>, function(data) { 
    console.log(data); 
}); 
+0

Я пробовал это и имел подобные проблемы. Я думаю, это потому, что данные JSON были массивом массивов. – sehummel

+0

Почему? DataType - json. Это функционально эквивалентно. –

+0

Console.log, а затем проверьте данные. Возможно, вам придется использовать 'data [0]', если это JSONP – switz

1

Существует не достаточно информации, чтобы ответить на этот вопрос правильно.

Если вы пытаетесь отладить с помощью «Alert», у вас проблемы.

Вместо «alert (data)» попробуйте «console.log (data)», если вы используете FireBug или Inspector (Chrome, Safari).

Данные могут быть несколькими видами вещей, обычно объектом. Поэтому, предупреждая об этом, вы ничего не сделаете для вас, если только сначала не превратите его в строку.

Вы также можете использовать сетевые панели, чтобы узнать, какие данные поступают через провод, или вы можете использовать что-то вроде Fiddler или HTTPScoop, чтобы выяснить, что возвращается с сервера.

6
data: '{}', 

Это посылает пустой объект данных на сервер и работает вокруг некоторых вопросов, где отправка пустые данные (не включая data вообще) вызывает вопросы.

Еще одна вещь, которую я видел, не устанавливая:

contentType: "application/json", 

Один простой способ данные «отладки» визуально должен включать json2.js и делать (в функции успеха):

alert(JSON.stringify(data)); 
+0

'$ http.post (« Status.aspx/MyData », {})' работал для меня. – OmegaMan

0

data ключевым моментом здесь является тот, который вы хотите отправить на сервер (если таковые имеются):

data: '', 

Но data аргумента внутри обратных вызовов является то, что вы получаете от сервера:

success: function(data, status, xhr) { 
    alert(data); 
}, 
error: function(xhr, status, error) { 
    alert(status); 
} 

При использовании dataType: 'json', вы говорите JQuery, что вы ожидаете JSON от сервера. Итак, вы выводите действительный JSON из PHP (например, с json_encode)? Если это так, ваш код должен работать.