5
Ajax GETリクエストが正しく機能しています。しかし、GETのために大量のデータを送信することを期待しているため、POSTを使用する必要があります。AJAX、GET ok、POSTなし
環境:Apache 2、Debian 9(スクラッチから)、jQuery 3.2.1、何も特別なものはありません。
私はこのコードに私の問題をストリップダウン:
CLIENT
<!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>
サーバ
GET経由AJAX呼び出しを送信するとき、私は唯一の を変更<?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();
?>
コンソール上で私にこの結果を与える
type: 'GET'
から
:
{method: "GET", get: "here I am", post: null}
これは、あなたが期待するものです。
しかし、POST経由で呼び出すときに私が取得:
{method: "POST", get: null, post: null}
サーバがPOSTリクエストを理解しますが、値を配信しません。
彼らはすべて違いはありません、同じ結果
url: 'ajaxtest2.php'
url: './ajaxtest2.php'
url: './ajaxtest2.php/'
でいくつかの助言として、私は、ターゲットURLを含む、さまざまな方法を試してみました:$ _POSTのは空のままです。
はまた、私は空 get_defined_vars()サーバー上のが、$ _POST滞在をログに記録し、「私はここに」 の痕跡はどこにもダンプされた変数ではありません。urlの書き換えなどで.htaccess minglingはありません。
他に何ができますか?
あなた*ブラウザ*は、それが(ネットワークタブ上で)送る何を言ってん。 –
テストの場合、 'contentType: 'application/jsonをコメントアウトします。 charset = utf-8''を実行し、POSTテストをもう一度試してください。 – IncredibleHat
'$ _REQUEST ['testdata']'はPHPで何の出力をしますか? – skobaljic