我有點難住下面,任何幫助表示讚賞。我已經刪除錯誤檢查什麼錯的這個例子代碼...
我運行PHP 5.4.14和使用PHP的服務器...
編輯:感謝來自阿爾瓦羅幫助我現在可以看到問題是$HTTP_RAW_POST_DATA
實際上碰到了PHP開發服務器,但由於某種原因,它並未用於填充$_POST
。
JavaScript片段(從實際代碼採取這裏simplfied)當我點擊提交表單按鈕是被稱爲...
xmlhttp = new XMLHttpRequest();
<snip>
params =
"forename=" + encodeURIComponent(form.forename.value) + "&" +
"surname=" + encodeURIComponent(form.surname.value) + "&" +
"nonce=" + encodeURIComponent(form.nonce.value);
<snip>
xmlhttp.open("POST", url, false);
<snip>
if (xmlhttp.overrideMimeType)
{
xmlhttp.overrideMimeType('text/html');
}
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
alert(params);
xmlhttp.send(params);
從alert
我可以看到PARAMS都還好。
POST請求然後正確地命中我的腳本,但$_REQUEST
數組(也是$_POST
)的錯誤日誌給了我一個空數組。我一進入腳本就會完成$_REQUEST/_POST
的錯誤日誌。
我的腳本回復和JavaScript可以拿起答覆...但當然,我所有的腳本可以返回是錯誤代碼... doh。
任何想法,爲什麼這可能是這種情況?編輯:感謝ÁlvaroG. Vicario爲他的幫助迄今。現在我可以看到請求確實離開了瀏覽器。
Request URL:http://localhost:8000/php_database/search_member.php
Request Method:POST
Status Code:200 OK
Request Headers
POST /php_database/search_member.php HTTP/1.1
Host: localhost:8000
Connection: keep-alive
Content-Length: 69
Origin: http://localhost:8000
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Content-type: application/x-www-form-urlencoded
Accept: */*
Referer: http://localhost:8000/php_database/db_search.php
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: PHPSESSID=954ebbfadb841ef659a3961a44d715871bdedbaa
Form Data
forename=ss&surname=dd&nonce=6c3e75f500dffdbfefe95d91710432dd8fd23fab
Response Headers
HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
X-Powered-By: PHP/5.4.14
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: text/xml
的PHP腳本運行......劇本是前兩行...
<?php
$DEBUG = TRUE;
if($DEBUG){ error_log("\n\n\n", 0); error_log("\n\n> SEARCH MEMBER SCRIPT", 0); }
error_log(print_r($_REQUEST, TRUE), 0);
哪些日誌輸出...
> SEARCH MEMBER SCRIPT
[Mon May 27 15:42:22 2013] Array
(
)
如果我再添打印$_POST
,相同...
如果我按照...評論,只是讓我的腳本打印出一些全球性.. 。
我得到以下
array(0) {
}
array(0) {
}
array(0) {
}
array(25) {
["DOCUMENT_ROOT"]=>
string(7) "C:\TJJT"
["REMOTE_ADDR"]=>
string(3) "::1"
["REMOTE_PORT"]=>
string(5) "59543"
["SERVER_SOFTWARE"]=>
string(29) "PHP 5.4.14 Development Server"
["SERVER_PROTOCOL"]=>
string(8) "HTTP/1.1"
["SERVER_NAME"]=>
string(9) "localhost"
["SERVER_PORT"]=>
string(4) "8000"
["REQUEST_URI"]=>
string(31) "/php_database/search_member.php"
["REQUEST_METHOD"]=>
string(4) "POST"
["SCRIPT_NAME"]=>
string(31) "/php_database/search_member.php"
["SCRIPT_FILENAME"]=>
string(38) "C:\TJJT\php_database\search_member.php"
["PHP_SELF"]=>
string(31) "/php_database/search_member.php"
["HTTP_HOST"]=>
string(14) "localhost:8000"
["HTTP_CONNECTION"]=>
string(10) "keep-alive"
["HTTP_CONTENT_LENGTH"]=>
string(2) "75"
["HTTP_ORIGIN"]=>
string(21) "http://localhost:8000"
["HTTP_USER_AGENT"]=>
string(108) "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36"
["HTTP_CONTENT_TYPE"]=>
string(33) "application/x-www-form-urlencoded"
["HTTP_ACCEPT"]=>
string(3) "*/*"
["HTTP_REFERER"]=>
string(48) "http://localhost:8000/php_database/db_search.php"
["HTTP_ACCEPT_ENCODING"]=>
string(17) "gzip,deflate,sdch"
["HTTP_ACCEPT_LANGUAGE"]=>
string(14) "en-US,en;q=0.8"
["HTTP_COOKIE"]=>
string(50) "PHPSESSID=b1e2eb2ba3d687bfeadee6bc17e1b994c214cd3a"
["REQUEST_TIME_FLOAT"]=>
float(1369666751.2246)
["REQUEST_TIME"]=>
int(1369666751)
}
string(75) "forename=xfvz&surname=zxcvzx&nonce=276083038fdd9a932ff06b94e5786fdd840873a4"
在上面,我可以清楚地看到底部...
string(75) "forename=xfvz&surname=zxcvzx&nonce=276083038fdd9a932ff06b94e5786fdd840873a4"
哇。所以$HTTP_RAW_POST_DATA
實際上確實碰到了PHP開發服務器......但由於某種原因,它並不適用於填充$_POST
。
這是我推薦的jQuery。讓生活更輕鬆。 – itachi
據我所知,代碼中沒有任何內在錯誤。錯誤必須位於您省略的部分。作爲一般規則,'alert()'是一個糟糕的調試工具。使用Firebug或瀏覽器的等效工具檢查變量和HTTP請求。 –
@Alvaro:謝謝你的回覆。是的同意'alert()'很笨拙!在'xmlhttp.send(params);'這行之後,這就是HTTP請求消失了嗎?從Javascript方面來說,如果'params'沒問題,任何東西都可能是錯的?在PHP方面,你有任何關於如何調試的建議嗎?我不知道如何調試,一旦由PHP服務器接收到的HTTP請求......是存在的,前例如,一個辦法看到HTTP請求作爲,如果與本地主機交談時,我會wiresharked呢?謝謝:) – Jimbo