2012-03-23 14 views
20

XHR responseType'ı "json" olarak ayarlamakta sorun yaşıyorum. Bunun boş bir dize xml.responseType = ""; terk ama eğer iyi çalışır onu ayarladığınızda için "json" Ben konsol hata mesajı SYNTAX_ERR olsun: DOM İstisna 12.XMLHttpRequest responseType = "json" hatası veriyor SYNTAX_ERR: DOM Özel Durum 12

.js dosyası:

var xml = new XMLHttpRequest(); 
xml.open("GET", "test.php", true); 
xml.responseType = "json"; 
xml.send(); 

. php dosyası:

<?php 
$foo = "{\"key1\":\"val1\", \"key2\":\"val2\"}"; 
echo $foo; 
?> 

Neler olup bittiğinden emin değil misiniz .. Herhangi bir fikir?

+0

Tamam istenilen formatta veri almak için aşağıdaki kodu kullanabilirsiniz responseType kullanmanın

. mozilla.org/en/XMLHttpRequest) ("belge", "blob", "dizisi", "metin", "") "json" için HARİCİ. Chrome 17 ve Safari 5.1'de denedim. – alnafie

+0

Ayrıca, bir sunucudan bilgi çıkışı verdiğinizde, dönüşte uygun bir içerik mim türü koyduğunuzu unutmayın. başlık ("İçerik Türü: uygulama/json"); sorunu çözmeli. Ayrıca json'u kendiniz yapmak yerine json_encode kullanmalısınız. print json_encode (array ("key1" => "val1", "key2" => "val2")); – Rahly

+0

Mart 2014 itibariyle, en son Chrome ve Firefox'ta ve Opera'da responseType = "json" destekleniyor. – Kay

cevap

23

responseType, sana bu yöntemi uygulamıyor bir tarayıcı kullandığınızı mümkün olabilir böylece tüm tarayıcılar bu yöntemi desteklemiyor eminim // geliştirici: yerine ilave testler yapıldıktan sonra, bu [buradan] (https belirtilen tüm değerleri kabul edecek ..

var xml = new XMLHttpRequest(); 
xml.open("GET", "test.php", true); 

xml.onreadystatechange = function() { 
    if (xml.readyState != 4) { return; } 

    var serverResponse = JSON.parse(xml.responseText); 
}; 

xml.send(null); 
+0

veya eval (xml.responseText) kullanın) emin olmak için –

+16

Değerlendirmeyi kullanmanızı tavsiye etmem çünkü kullanıcı döndürülen verilerde değerlendirme yapmak güvenli olmadığından, tarayıcının doğal olarak JSON ayrıştırma işlemini desteklemiyorsa bile çalışacağından emin olmak istiyorsanız kitaplık gibi kullanabilirsiniz Bu http://www.json.org/js.html, ama geri bildirim için teşekkürler :) –

+1

Ayrıca 'responseText olup olmadığını görmek için' JSON.parse' aramayı bir 'try-catch' bloğuna çevirebilirsiniz. property, geçerli JSON olarak uygun şekilde ayrıştırıldı. –

8

JSK ResponseType WebKit'te uygulanmamıştır. http://groups.google.com/a/chromium.org/group/chromium-bugs/browse_thread/thread/8107e50e4207eb5a/a5d2c31247feae56?lnk=raot

Güncelleme 2016/01/03: gibi WebKit bu arada bu özellik uygulamaktadır, beklenebilir.

XMLHttpRequest nesne için özellik HTML 5 dahildir yeni varyant XMLHttpRequest Level 2 ve eklenir
+3

JSON yanıt türü son zamanlarda Chromium'da uygulandı: http://src.chromium.org/viewvc/blink?view=revision&revision=156290 – kamituel

+0

Bu özellik, Kasım 2013'te Chrome 31 ile yayımlandı. – Nayuki