2016-07-19 2 views
1

Я использую json_encode для преобразования ассоциативного массива в формат JSON. Но когда я пытаюсь напечатать свойство data, доступ через Ajax из этого файла PHP, он показывает undefined. Когда я проверил тип данных, он возвращает строку.Почему этот json_encode возвращает строку вместо объекта?

$elem1= "<div class='menuitems'> 
         <div class='menu1'>".$row['name']."<span class='srno'>".$row['srno']."</span></div> 
         <div class='menu2'>".$row['email']."</div> 
         <div class='menu3'>".$row['password']."<span class='cross'>X</span></div> 
         <div class='clear'></div> 
        </div>"; 
$elem2=$row['category']; 
$array=array(
     "elem1"=>"$elem1", 
     "elem2"=>"$elem2" 
    ); 
echo json_encode($array); 

Почему это так? Как я могу получить доступ к elem1 и elem2 через эту строку?

+0

JSON - это строковый формат ... – Sirko

+0

Вызов 'json_decode()' для его декодирования. – Barmar

+1

Весь смысл JSON заключается в преобразовании массивов и объектов в строки, поэтому вы можете отправлять их по сети или сохранять их в файле. – Barmar

ответ

0

Всегда ответы HTTP будут строка тип данных. Перед использованием вы должны разбирать JSON. Есть два пути. Вы должны использовать:

$.getJSON(url, function (data) { 
    typeof data; // object 
}); 

В отличие от:

$.get(url, function (data) { 
    typeof data; // string 
}); 

Если вы используете один выше, вам нужно использовать:

$.get(url, function (data) { 
    typeof data; // string 
    data = JSON.parse(data); 
    typeof data; // object 
}); 

Примечание: I Я использую AJAX из jQuery. Преобразование, которое очень специфично, относится к чистому JavaScript.

+0

Вы использовали $ .get. Действительно ли это для $ .ajax? В чем разница между $ .get и $ .ajax? –

+0

@VikasKumar Да! '$ .get' - сокращение для' $ .ajax' с использованием URL. –

+0

Хорошо, вам не нужно определять 'type' и т. Д.? –