#php #jquery
#php #jquery
Вопрос:
Здесь $fruit кодируется с помощью js_encode() и отправляется обратно в data в ajax. Мои вопросы: какой тип данных (строка или массив)? Заранее спасибо!
$.ajax({
type:"post",
dataType:"json",
url:"phpFile.php",
success: function(data) {
}
});
<?php
$fruits = array(array("1","apple"),array("2","pear"));
echo js_encode($fruits);
?>
Комментарии:
1. Я думаю, вы имеете в виду использовать json_encode($fruits), если только вы не написали функцию с именем js_encode .
Ответ №1:
Вы указали тип данных ответа как json
. jQuery попытается автоматически декодировать данные в формате JSON и передать полученный тип данных JavaScript в обратный вызов. Это data
может быть строка, число, логическое значение, массив или объект. null
В вашем конкретном случае вы кодируете массив PHP как JSON, поэтому результатом будет массив.
Комментарии:
1. Если вы анализируете строку JSON, у вас может быть только массив или объект. Другие типы данных могут быть представлены внутри, но самый внешний тип данных может быть только array или object.
2. @Quentin: Ммм, вы правы… Клянусь, я видел, что jsonlint объявляет
"somestring"
действительный JSON, но теперь это не … странно. Тогда ImoJSON.stringify("foo")
также должен завершиться неудачей…3. Возможно, ошибка в jsonlint, которая теперь исправлена?
Ответ №2:
Это ничего не будет. Метод success никогда не сработает, потому что PHP выдаст ошибку with Fatal error: Call to undefined function js_encode()
, которая вернет ошибку 500, поэтому jQuery запустит error
функцию (если она существует), а не success
функцию.
Если бы вы исправили PHP и использовали json_encode
, тогда он выводил бы JSON с массивом верхнего уровня, так data
что это был бы массив.
Обратите внимание, что вы также должны убедиться, что ваш скрипт не утверждает, что JSON является HTML.
header('Content-Type: application/json');
Ответ №3:
data
переменная будет содержать следующее: [["1","apple"],["2","pear"]]