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');
Другие вопросы по тегам