Tôi đã tìm kiếm trên google và có rất nhiều câu hỏi về chủ đề này trên stackoverflow. Chẳng hạn như 'dữ liệu không được gửi trên phương thức đăng bài', v.v. Nhưng dường như không phải là câu hỏi của tôiajax php javascript: lỗi khi sử dụng phương thức POST
Trường hợp gần như giống với các câu hỏi khác. Đây là những msg lỗi:
Firefox (v21):
InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable.
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
Chrome (v27):
Uncaught Error: InvalidStateError: DOM Exception 11
Khi yêu cầu được gửi bởi GET
, không có lỗi. Và tất cả dữ liệu GET nhận được tốt.
Nhưng khi được gửi bởi POST
+ setRequestHeader
, itu xảy ra lỗi như trên. Khi setRequestHeader
bị xóa, lỗi đã biến mất. Không có lỗi, nhưng không nhận được dữ liệu POST. i print_r($_POST)
; sau đó mảng trống rỗng
Câu hỏi đã được cập nhật. Dưới đây là những người gọi:
goServer({
url : 'users/sign-in.php',
method : 'POST',
data : 'randomId=' + randomId + '&name=' + name + '&password=' + password,
done : function(response) {
alert(response);
},
fail : function(response) {
alert(response);
}
});
Và đây là các chức năng (xin lỗi, dây chuyền dài):
function randomString() {
var str = new Date().getTime(),
str2 = Math.random();
str = str.toString();
str2 = str2.toString();
str2 = str2.substring(2,7);
str += str2;
return str;
}
function goServer(opts) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = requestComplete;
function requestComplete() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
opts.done(xhr.responseText);
} else {
opts.fail(xhr.responseText);
}
}
}
if (!opts.method || opts.method === undefined) {
opts.method = "GET";
}
if (!opts.cache || opts.cache === undefined) {
opts.cache = false;
}
if (opts.cache === false) {
opts.url += '?nocache=' + randomString();
} else {
opts.url += '?nocache=false';
}
if (opts.method === "GET") {
if (opts.data !== '' && opts.data !== undefined) {
opts.url += '&' + opts.data;
}
opts.data = '';
} else {
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
}
xhr.open(opts.method, opts.url, true);
xhr.send(opts.data);
}
Lưu ý, các tham số dữ liệu (opts.data) được thiết lập để url khi nó gửi qua đường ĐƯỢC. Khi được gửi bởi POST, paramater được đặt thành xhr.send (opts.data);
Câu hỏi: Cách nhận dữ liệu POST chính xác?
Cảm ơn bạn
đăng mã quá, vui lòng – DevZer0
'print_r (file_get_contents ('php: // input'));'
BlitZ
@CORRUPT, câu hỏi được cập nhật :) –