Yêu cầu GET của Ajax đang hoạt động đúng cách. Nhưng tôi phải sử dụng POST vì tôi dự kiến gửi một lượng dữ liệu lớn hơn, quá nhiều cho GET.AJAX, GET ok, POST không
Môi trường: Apache 2, Debian 9 (từ đầu), jQuery 3.2.1, không có gì đặc biệt.
Tôi rút gọn vấn đề của tôi để mã này:
KHÁCH HÀNG
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Ajaxtest</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
</head>
<body>
<script language="JavaScript">
<!--
$.ajax({
url: 'ajaxtest2.php',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
type: 'POST',
data: {testdata: 'here I am'},
success: function (resp) {
console.log(resp);
},
});
-->
</script>
</body>
</html>
MÁY CHỦ
<?php
ini_set('error_reporting', E_ERROR);
header('Content-type: application/json');
header('HTTP/1.1 200 OK');
print json_encode(
array(
'method'=>$_SERVER['REQUEST_METHOD'],
'get'=>$_GET['testdata'],
'post'=>$_POST['testdata'])
);
exit();
?>
Khi gửi các cuộc gọi ajax qua GET Tôi chỉ thay đổi
type: 'POST'
để
type: 'GET'
nào mang lại cho tôi kết quả này trên giao diện điều khiển:
{method: "GET", get: "here I am", post: null}
Đây là những gì bạn mong đợi.
Nhưng khi gọi qua POST tôi nhận được:
{method: "POST", get: null, post: null}
Máy chủ hiểu một yêu cầu POST nhưng không cung cấp bất kỳ giá trị.
tôi đã cố gắng cách khác nhau trong đó có mục tiêu url như cố vấn bởi một số với kết quả tương tự
url: 'ajaxtest2.php'
url: './ajaxtest2.php'
url: './ajaxtest2.php/'
Tất cả họ đều làm cho không có sự khác biệt: $ _POST ở lại trống rỗng.
Ngoài ra tôi đăng nhập get_defined_vars() trên máy chủ, nhưng $ _POST ở lại trống rỗng và không có dấu vết của 'ở đây tôi' bất cứ nơi nào trong các biến đổ.
Không có .htaccess trộn lẫn với ghi đè url hoặc tương tự.
Tôi còn có thể làm gì khác?
gì * trình duyệt của bạn * nói nó gửi (trên tab mạng). –
Để kiểm tra, hãy bình luận ra 'contentType: 'application/json; charset = utf-8'' và thử lại bài kiểm tra POST. – IncredibleHat
Đầu ra '$ _REQUEST ['testdata']' trong php là gì? – skobaljic