2013-10-14 3 views
0

jquery ajax get call в функции ниже должен передать некоторые параметры test.php, попробуйте test.php выполнить некоторые тесты на основе этих параметров и вернуть (закодированные jason) результат теста (status_general) на .get(). Однако вызов console.log в приведенном ниже коде показывает неопределенное значение, в то время как мой отладчик php показывает, что test.php возвращает правильный результат теста, закодированного в Джейсоне. Мой код .get основан на примере 5 из http://api.jquery.com/jQuery.get.jquery .get не возвращает правильное значение

Любые предложения, что пойдет не так/как это исправить? Заранее спасибо за помощь.

Код:

$.get("test.php", { command: "test", val1: ipaddress, val2: "" }) 
.done(function(data) { 
    var test_result = data.status_general; 
    console.log('test result: '+test_result);    
},"json"); 
+4

Попробуйте данные регистрации консоли, чтобы узнать, что возвращает сервер. –

+0

замените 'done' на' success'. – gdoron

+0

@zeke: console.log (data) дает много текста, начиная с «

Joppo

ответ

0

Ваша страница PHP не возвращает действительный json (на основе вашего комментария). Чтобы получить jquery для разбора json, у него не может быть никаких других вещей (т. Е. Тегов html). Также хорошая идея отправить заголовки json данных типа.

http://www.caveofprogramming.com/php/php-json-an-example-javascript-json-client-with-php-server/

data.status_general возвращается неопределенным, так как данные не объектов JavaScript.

+0

thnx, добавив 'header (' Content-type: application/json ')' в вашу ссылку, решила проблему. Хотя я до сих пор не понимаю, почему все остальные вызовы .get(), которые я использовал без заголовка, отлично работали (?) – Joppo

0

Я хотел бы предложить, что вы должны убедиться, что ваш сервер устанавливает правильный заголовок Content-Type для JSON (см What is the correct JSON content type?).

По the jQuery documentation:

Примечание: Мы должны убедиться, что тип MIME сообщает веб-сервер соответствует нашему выбору dataType.

Итак, я бы предложил использовать отладчики сетевого трафика FireBug или Chrome, чтобы подтвердить, что правильный Content-Type отправляется (и для просмотра фактических данных, возвращаемых с сервера). Если вы используете правильный Content-Type, Chrome, по крайней мере, покажет вам довольно напечатанную JSON на вкладке сети.

+0

thnx для предложения; но я задаюсь вопросом, будет ли тип контента неправильным, поэтому я уже использовал другой (тип) вызова ajax get() (без параметров передачи), также настроенный на получение json-кодированных данных, и этот вызов работает нормально. Я просто изменил/исправил несколько вещей, которые помогли создать правильный формат json, например. '{"status_general": "success"}', но мониторинг data.status_general все еще показывает значение undefined ??? – Joppo

Смежные вопросы