PHP tepki başlığı "application / json" içeriyorsa JSON.parse jQuery başarısız

1 Cevap php

Ben bunu anlamaya çalışıyorum bir baş ağrısı biraz alıyorum. Ajax ile bir PHP-script bazı json-veri istemek için ben jQuery işlevini kullanarak ediyorum:

$.ajax({
    type: 'GET',
    cache: 'false',
    url: ajaxUrl,
    data: dataString,
    success: updatePage
});

: I don't için PHP başlığındaki içerik türünü belirlerseniz

header('Content-type: application/json');

Sonra sunucudan benim yanıt bu gibi görünüyor:

{"content":"new content"}

Ve içerik türü otomatik olarak text / html olarak ayarlanır. JQuery ajax seçenekleri dataType kaldırılırsa, bu 'akıllı tahmin' bir varsayılan kullanır. I strongly updatePage bir nesne ayrıştırılır çünkü jQuery json olarak tepki verileri tanır varsayarak kulüpler. updatePage json js kütüphanesini (json2.js) kullanır ve bu yapar:

function updatePage(data) {
  $dataObj = JSON.parse(data); 
}

When the function is called upon ajax succes, everything works fine. No errors. Here's the strange thing, if I set my header to application/json as above, JSON.parse suddenly reports an error. The exact same error happens if i set my dataType to 'json' in the jQuery ajax request. The response I get from the PHP script when changing these things looks exactly like the one above. The error looks like this in Firebug:

JSON.parse
  $dataObj = JSON.parse(data); 

Herkes sorunun ne olduğunu bilen varsa bir uzun Tür, üzgünüm, ama onların yardım büyük beğeni topluyor. Zaman ayırdığınız için teşekkürler.

1 Cevap

Eğer dönüş değeri-ayrıştırmak katına çalışıyor sona çünkü bulunuyor.

Açık json veri türü ve sizin için bir JavaScript nesnesine döndürülen dize ayrıştırmak için application/json MIME tipi nedeni jQuery kullanımı hem de.

Yani, JSON.parse() sizin kullanım, bu gibi durumlarda, gereksiz.