2

(javascript)を介してサーバーにPOSTリクエストを送信しようとするとxmlhttp.open("POST", "url", true)、空になります$_POST array

Firebugは、データが送信されていることを示しています。Firebugからのデータ文字列は次のとおりa=1&q=151a45a150...です。しかし、$_POST['q']何も返しません。

興味深いのはfile_get_contents('php://input')、私のデータ(上記の文字列)が含まれていることですが、PHPはどういうわけかそれを認識しません。$_POSTと$_REQUESTの両方を試しましたが、何も機能しません。

送信されるヘッダー:

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

提案ありがとうございます。

4

4 に答える 4

4

正しいContent-Typeヘッダーが欠落しているようです。これはPOSTリクエストに必要です。

xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
于 2010-04-20T07:22:45.907 に答える
2

送る

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

代わりにヘッダーtext/plain

于 2010-04-20T07:22:42.397 に答える
0

この問題の解決策を見つけるために何時間も費やしました。

パラメータにしたいいくつかの文字列を連結するというばかげた間違いを犯し、それからencodeURIComponent全体を呼び出しました。もちろんこれは

foo=bar&this=that

なりました

foo%3Dbar%26this%3Dthat

もちろん、これはPHPスクリプトにとってはぎこちないものです。これほどばかげたことをする人がたくさんいるのではないかと思いますが、私が自分に与えた頭痛の種を誰かが救ってくれることを願っています。

于 2011-06-12T12:02:38.737 に答える
0

あなたはそれをこのように書かなければなりません:

xmlhttp.open("POST", "script.php", true);
xmlhttp.send("foo=bar&answer=42");
于 2010-04-20T07:25:52.330 に答える