2010-11-25 4 views
15

POST yöntemini kullanarak bir XMLHttpRequest yazmaya çalışıyorum. GET yöntemini kullanarak geçmişte XMLHttpRequest kullanmayı başardım ama POST ile mücadele ediyorum.AJAX XMLHttpRequest POST

var xmlhttp = null; 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp = new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

var url = "http://www.mysite.com/script.php"; 
var params = "var=1"; 
xmlhttp.open("POST", url, true); 
xmlhttp.send(params); 

Temelde sonra bir veritabanına bazı bilgiler ekler bir PHP komut dosyası çağırır:

İşte benim kod.

+0

Hata nedir? –

+0

Hata yok ve Chrome Inspector'a göre kod gayet iyi. – diggersworld

cevap

-6

Tamam gibi + ile %20 tüm örneklerini değiştirmek gerekir bunu sıralamak başardınız.

Tek neden, sanal alanla ilgili güvenlik olabilir, ancak tam URL adresine sahip olmak yerine, dosyaya ilişkin göreli yolu kullanmıştım ve şimdi çalışıyor.

Desteğiniz için hepinize teşekkür ederiz.

49

POST istekleri sırasında gerekli olan Content-type başlığına açıkça ayarlamayı unutmuşsunuzdur.

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

Ayrıca düzgün parametreleri kodlamak için encodeURIComponent kullanmayı unutmayın örn: bu özel örnekte

var params = "var=" + encodeURIComponent("1"); 

(bu gerekli değil ama + şeyler gibi özel karakterleri kullanırken gidecek parametre metnini kodlamıyorsanız korkunç şekilde yanlıştır).

Güncelleme - Ayrıca

var params = params.replace(/%20/g, '+'); 
+0

İçerik türü ve kodlamayı eklemeyi denedim, ancak işlem betiği hala çağrılmıyor. – diggersworld

+0

@diggers: İşleme komut dosyası neye benziyor? Sorunuzu içerecek şekilde değiştirebilir misiniz? –

+2

, "İçerik türü" başlığı değil, İçerik Türü "başlığı" olmalıdır ... –