Tôi đang cố gắng gửi dữ liệu JSON từ một biểu mẫu bằng cách sử dụng đối tượng XMLHttpRequest. Tôi có thể gửi dữ liệu bằng cách sử dụng chức năng sau. Không có lỗi nào được hiển thị trong FireBug và dữ liệu JSON trong yêu cầu được FireBug hiển thị tốt.Gửi dữ liệu JSON tới PHP bằng cách sử dụng XMLHttpRequest w/o jQuery
Tuy nhiên, tôi gửi dữ liệu đến echo.php, những gì chỉ đơn giản trả về nội dung:
<?php
print_r($_POST);
print_r($_GET);
foreach (getallheaders() as $name => $value) {
echo "$name: $value\n";
}
echo file_get_contents('php://input');
?>
Các POST-mảng luôn là trống rỗng, nhưng tôi có thể thấy chuỗi JSON được trả về bởi file_get_contents
. Điều đó xảy ra như thế nào? Tôi đang làm gì sai?
sản lượng echo.php
Array
(
)
Array
(
)
Host: localhost
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: eo,de-de;q=0.8,de;q=0.6,en-us;q=0.4,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/json; charset=utf-8
Referer: http://localhost/form.html
Content-Length: 88
Cookie: {{..to much data..}}
Pragma: no-cache
Cache-Control: no-cache
{"type":"my_type","comment":"commented"}
chức năng gửi:
function submit(){
var data={};
data.type=document.form.type.value;
data.comment=document.form.comment.value;
//get right XMLHttpRequest object for current browsrer
var x=ajaxFunction();
var string = JSON.stringify(data);
x.open('POST','echo.php',true);
x.setRequestHeader('Content-type','application/json; charset=utf-8');
x.setRequestHeader("Content-length", string.length);
x.setRequestHeader("Connection", "close");
x.onreadystatechange = function(){
if (x.readyState != 4) return;
if (x.status != 200 && x.status != 304) {
alert('HTTP error ' + req.status);
return;
}
data.resp = JSON.parse(x.responseText);
if(data.resp.status=='success'){
alert('That worked!');
}else{
alert('That didn\'t work!');
}
}
x.send(string);
return false; //prevent native form submit
}
'cảnh báo ('lỗi HTTP' + req.status);' ==> req không được xác định, ý của bạn có phải là 'x' thay thế không? –