2017-11-20 21 views
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はありません。

他に何ができますか?

+0

あなた*ブラウザ*は、それが(ネットワークタブ上で)送る何を言ってん。 –

+1

テストの場合、 'contentType: 'application/jsonをコメントアウトします。 charset = utf-8''を実行し、POSTテストをもう一度試してください。 – IncredibleHat

+0

'$ _REQUEST ['testdata']'はPHPで何の出力をしますか? – skobaljic

答えて

関連する問題