2016-07-15 7 views
-1

私は他の質問をチェックしました - これは重複していません。 私は見つけて実装できるすべてのソリューションを試しました。AJAXからPHPへのポスト

私はtask.php → showCats.phpからデータを送信しようとしています

task.php:

<script type="text/javascript"> 

    $(document).on("click", ".btnCat", function() { 
     var filter = $(this).data("id"); 

     alert(filter); 
     $.ajax({ 
      type: 'POST', 
      url: 'showCats.php', 
      data: {'filter': filter}, 
     }); 
     $('div.container-fluid').load('showCats.php'); 
    }); 

</script> 

showCats.php:たとえ

$area = $_POST['filter']; 

$sql = "select AID,name,surname,street_name,house_number, area, plz,poster,visible from addresses WHERE area LIKE '$area' AND visible LIKE 'show' ORDER BY AID DESC"; 
$rs = mysqli_query($con,$sql); 
$str = ''; 

while ($res = mysqli_fetch_array($rs)) { 
    $str .= ' 
    <div class="col-md-9"> 
     <div class="task col-md-12 well" id='.$res['AID'].'> 
      <div> 
       <button class="btn btn-danger btn-xs btnDelete" id='.$res["poster"].' onclick="refresh()" data-id="'.$res['AID'].'">x</button> 
      </div> 
      <div> 
       <span>'. $res["name"].'</span> 
       <span>'. $res["surname"].'</span><br> 
       <span>'. $res["street_name"].'</span> 
       <span>'. $res["house_number"].'</span><br> 
       <span>'. $res["plz"].'</span> 
       <span>'. $res["area"].'</span> 
      </div> 
     </div> 
    </div>'; 
} 

echo $str; 
?> 

var_dump($_POST);戻りNULL、 Chromeのデベロッパーツールの投稿値が表示されます。

マイGET:

Request URL:https://example.com/showCats.php 
Request Method:GET 
Status Code:200 OK 
Remote Address:xxx:443 
Response Headers 
view source 
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Connection:keep-alive 
Content-Encoding:gzip 
Content-Type:text/html; charset=UTF-8 
Date:Fri, 15 Jul 2016 18:43:56 GMT 
Expires:Thu, 19 Nov 1981 08:52:00 GMT 
Pragma:no-cache 
Server:nginx/1.6.2 
Strict-Transport-Security:max-age=31536000 
Transfer-Encoding:chunked 
Request Headers 
view source 
Accept:text/html, */*; q=0.01 
Accept-Encoding:gzip, deflate, sdch, br 
Accept-Language:en-US,en;q=0.8,de;q=0.6 
Connection:keep-alive 
Cookie:PHPSESSID=vudgbb33574tfod2vu48hst830 
Host:example.com 
Referer:https://example.com/tasks.php 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 
X-Requested-With:XMLHttpRequest 

マイPOST:

Request URL:https://example.com/showCats.php 
Request Method:POST 
Status Code:200 OK 
Remote Address:xxx:443 
Response Headers 
view source 
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0 
Connection:keep-alive 
Content-Encoding:gzip 
Content-Type:text/html; charset=UTF-8 
Date:Fri, 15 Jul 2016 18:43:56 GMT 
Expires:Thu, 19 Nov 1981 08:52:00 GMT 
Pragma:no-cache 
Server:nginx/1.6.2 
Strict-Transport-Security:max-age=31536000 
Transfer-Encoding:chunked 
Request Headers 
view source 
Accept:*/* 
Accept-Encoding:gzip, deflate, br 
Accept-Language:en-US,en;q=0.8,de;q=0.6 
Connection:keep-alive 
Content-Length:12 
Content-Type:application/x-www-form-urlencoded; charset=UTF-8 
Cookie:PHPSESSID=vudgbb33574tfod2vu48hst830 
Host:example.com 
Origin:https://example.com 
Referer:https://example.com/tasks.php 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 
X-Requested-With:XMLHttpRequest 
Form Data 
view source 
view URL encoded 
filter:Turgi 
+1

['var_dump($ _POST)'](http://php.net/manual/en/function.var-dump.php)は常にnullを返しますが、変数をエコーし​​ます。 –

+0

'var_dump($ _ POST)'からのNULL出力はあなたのPOSTリクエスト( 'ajax')では発生し、後続のGETリクエスト(' load')では発生しませんか? – showdev

+0

@showdev私はそれを説明しようとしたし、私は-2を得た!!!! –

答えて

2

あなたはtask.php -> showCats.phpからデータを送信しようとしています!あなたのコードは、これを使用して、その非常によく行われます。

$.ajax({ 
    type: 'POST', 
    url: 'showCats.php', 
    data: {'filter': filter}, 
}); 

あなたがこれを行うときに問題がある:$('div.container-fluid').load('showCats.php');GET要求がサーバーに送信されます!したがって、通常はvar_dump($_POST)がNULLを返すことがわかります。

あなたはこのようなsuccessイベントを使用することができます応答を取得/表示する場合:

$.ajax({ 
    type: 'POST', 
    url: 'showCats.php', 
    data: {'filter': filter}, 
    //A function to be called if the request succeeds. 
    success: function(data) { 
     $('div.container-fluid').html(data) 
    }, 
    //A function to be called if the request fails 
    error: function(xhr, status, error) { 
     alert('An error occurred:'+error); 
    } 
}); 
+0

Downvote?ちょうどなぜ!!! –

+2

サーバ上でなぜnullであるのかを尋ねる。これはそれに答えるつもりはありません。 – rlemon

+0

彼は '成功'メソッドを使う代わりに 'load'を使って返されたデータを表示しようとしているからです! –

0

データ型のパラメータを設定するには、あなたが送信するデータの種類を伝えます。

type: "POST", 
dataType: 'json', 

私は上記のコメントに同意します。 2回目にプログラムをロードしても、データベース呼び出しの値は報告されません。さらに、AJAXは通常、表示されないPHPページの実行に変数をエコーするのではなく、json_encodeのエコーで呼び出し元のプログラムに値を返すのではないでしょうか?

+0

質問upvoted。すべてが画期的でなければならないわけではありません。カウントのトラブルシューティング。 – gladiola

+0

ニックピッチではありませんが、 'dataType'は、あなたがサーバ*から返す予定のデータのタイプを定義します。 [ajax()](http://api.jquery.com/jquery.ajax/)を参照してください。 – showdev

+0

OK、あなたは正しいです。ちょっと前に、その呼び出しの必須部分とオプション部分について私に質問があったので、私はそれを言いました。私はdataTypeが必須のものだと思います。ちょうどスタックオーバーフローに関する答えに達する。 – gladiola

関連する問題