Ajax DataType: ответ JSON: OK, но нет вывода?

Ладно, вот моя проблема. У меня есть простой запрос jQuery Ajax, и я не могу получить работу, когда я устанавливаю DataType в «JSON».

var form_data = { "id": msg, "token": token }; $.ajax({ type: 'POST', url: "ajax.php", data: form_data, dataType: 'json', beforeSend:function(){ // this is where we append a loading image }, success: function(data) { var thing = JSON.parse(data); $('.body-item').html(thing.b); }, error: function() { alert('error'); } }); 

На самом деле это мой файл ajax. ajax.php выглядит так:

  $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); $foo = json_encode($arr); echo $foo; 

Когда я запускаю сценарий jQuery, у меня есть ответ 200: OK с Firebug, и когда я смотрю на ответ, я получил следующее: {"a":1,"b":2,"c":3,"d":4,"e":5}

Однако я НЕ получаю ничего, что показывалось в div .body-item, и если я попытаюсь с alert ().

Кроме того, если я запускаю тот же код БЕЗ: dataType: 'json' part, я получаю все, что выводится правильно.

Что может быть здесь?

Когда вы используете dataType: 'json' , jQuery вызывает JSON.parse() и помещает результат в data . Вы не должны называть это самостоятельно, поскольку data не являются строкой JSON, это анализируемый объект. Так что просто:

 $('body-item').html(data.b); 

Из документации :

«json»: оценивает ответ как JSON и возвращает объект JavaScript.