JavaScript + PHP $ _POST dizi boş

4 Cevap php

Ben boş bir $_POST array almak sunucuya xmlhttp.open("POST", "url", true) (javascript) üzerinden bir POST isteği göndermek için çalışırken.

Kundakçı veri gönderilirken olduğunu gösterir. İşte Kundakçı gelen veriler dizesi: a=1&q=151a45a150.... Ancak, $_POST['q'] hiçbir döner.

Ilginç bir şey file_get_contents('php://input') (yukarıda string) benim veri var, ancak PHP nasılsa tanımıyor olmasıdır. Hem $ _POST ve $ _REQUEST denedim, hiçbir şey inşaat.

Başlıkları gönderiliyor:

POST /test.php HTTP/1.1
Host: website.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401        Firefox/3.6.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://website.com/
Content-Length: 156
Content-Type: text/plain; charset=UTF-8
Pragma: no-cache
Cache-Control: no-cache

Herhangi bir öneriniz için teşekkür ederiz.

4 Cevap

Eğer doğru Content-Type üstbilgisi eksik gibi görünüyor. Bu POST istekleri için gereklidir:

xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 

Bir Gönderin

Content-Type: application/x-www-form-urlencoded

başlık yerine text/plain

Bunu böyle yazmak zorunda:

xmlhttp.open("POST", "script.php", true);
xmlhttp.send("foo=bar&answer=42");

Sadece bu çok soruna yönelik bir düzeltme bulmaya çalışırken saat geçirdim.

Ben parametreleri olmak istedim birkaç dizeleri bitiştirmek aptalca bir hata yaptı ve SONRA sürü üzerinde encodeURIComponent çağırıyor. Bu tabii anlamına geliyordu

foo=bar&this=that

oldu

foo%3Dbar%26this%3Dthat

Tabii ki bir PHP komut dosyası için anlamsız olduğunu. Ben bu kadar saçma bir şey yapacağını pek çok insan olabilir şüphe ederken, ben birisi ben sadece kendimi verdim baş ağrısı kaydeder umuyoruz ....