2017-01-26 4 views
1

私はプロジェクトに取り組んでおり、jqueryを使用して変数をPHPに送信しようとしています。これは、コードをテストするために使用しているtest2.phpというファイルです。ボタンをクリックしても何も起こっていないので、変数を出力する必要があるので、間違っていることを誰かに教えてください。jQuery変数with ajax

<!DOCTYPE html> 
<html> 
<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script> 
$(document).ready(function(){ 
    var something="hello"; 
    $("button").click(function(){ 
     $.ajax({ url: 'test2.php',type: "GET", data: { q : something }}); 
    }); 
}); 
</script> 
</head> 
<body> 
<button>Get External Content</button> 
</body> 
</html> 
<?php 
    if(isset($_GET['q'])) 
{ 

$q = $_GET["q"]; 
echo $q; 
} 
?> 
+0

AJAXはターゲットURLのコードをバックグラウンドで実行します。現在表示されているページの内容は表示されず、置き換えられません。 AJAXリクエスト自体が成功したかどうか確認したい場合は、ブラウザの 'Console'(ほとんどの場合は' F12'を押してください)に行き、 'Network'タブを見てください。 –

+0

あなたのJavaScriptコードはAJAXレスポンスで何もしていません。無視するだけです。 '$ .ajax()'のjQueryのドキュメントとサンプルでは、​​ "成功"と "エラー"コールバックを見ています。 – David

答えて

0

あなたのコードは、一般的に正しく見えるが、あなたはAJAX呼び出しを使用して、ボタンをクリックすると、このデータはtest2.php」の別のインスタンスに送信されていることを意味している、「非同期」のデータを送信することを忘れてはいけません"処理します。この新しいデータで現在のページをリロードしていません。

ブラウザで表示している "test2.php"コードは、初めてページを起動したときに一度サーバー側でのみ実行され、その時の '$ _GET'変数には 'q'はありません。 で、同じ "test2.php"ファイルの別のインスタンスにデータを送信します。ですが、何らかのデータを受信して​​いますが、その情報を使用してブラウザに何かをロードしていません。

達成しようとしていることに応じて、さまざまな解決策があります。

$.ajax({ 
    url: "test2.php", 
    type: "GET", 
    data: { q: something}, 
    success: function (response) { 
     // do something with 'response' here 
    } 
}); 

それとも、ボタンではなく "に格納されている情報と、ブラウザで現在のページを再読み込みし、簡単な<a>タグで持つことができる:あなたはそうのようなページ上の情報を更新するために、あなたのAJAX要求からあなたが受け取るものを使用することができます「そうのように:あなたのPHPコードが探したときに

<a href="test2.php?q=something">Button</a> 

が続いて 『$ _GET Q』は、ページを再読み込みするので、それは実際には$ _GET変数でそれを見つけるだろう。

+0

''と返されることはありません。 '' - これは少し誤解を招くことです。結果はJavaScriptコードに返されます*、そのコードは単にそれらを無視しています。 – David

+0

@Davidはい正しいです、私はそれに応じて、私の答えを更新します。 –