php json_encode не возвращает правильную строку в кодировке json
Я использую вызов jquery ajax, который принимает ответ json:
var posturl = '/admin/getparamdetails/';
var data = "adnetworkId="+adnetworkId;
$.ajax({
type: "POST",
url: posturl,
data : data,
datatype: "json",
success: function(msg){
//$("#displayPramForm").html(msg);
//alert('hello'+msg.length+' '+msg.hello.length);
console.log(msg);
if(msg!='')
{
alert(msg.hello);
}
},
failure: function(msg){}
});
в моей бэкэнд-функции php я использую json_encode для простого массива, как показано ниже:
$json_encoded_string = json_encode(array("hello"=>'abc'));
echo $json_encoded_string;
die;
но alert (msg.hello) возвращает неопределенное значение для меня. Что здесь не так? Кроме того, в моем console.log я могу получить вывод как:
{"hello":"abc"}
2 ответа
Решение
Использование parseJSON
по возвращаемым данным:
if (msg) {
msg = $.parseJSON(msg);
alert(msg.hello);
}
Вы должны отправить данные как Content-Type "application/json", иначе это не будет работать.
Просто добавьте следующее в ваш PHP-файл:
header('Content-type: application/json');