0

PHPドキュメントで使用できるように、AJAXを使用してスクリプトで変数を渡そうとしています。
アイデアは、JavaScriptを使用して選択された値を通過させ、その値をSQLクエリに渡すことでした

以下では、AJAXを使用して変数性別を通過させようとしましたが、男性を出力する必要があるときに未定義で出力されます

どんな助けでも感謝しますありがとう

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>

 var gender = 'male';

 $(".generate").click(function(){

  $.ajax({
     url: 'santa.php', //This is the current doc
     type: "GET",
     data: ({gender:gender}),
     success: function(data){
         console.log(data);
     }
});     

});

</script>
</head>
<body>

<button class="generate">Generate</button>

<?php

$userAnswer = $_GET['gender']; 

echo $userAnswer;

?>

</body>
</html>
4

3 に答える 3

1

ここでいくつか問題が発生しています。

1 $(".generate")lick(function(){ ... } つには、「.generate」オブジェクトが DOM で定義される前に実行されています。このセクションは、ボタンが DOM に存在した $(document).ready( )にのみクリック アクションが登録されるように、ブロックでラップする必要があります。

次に、AJAX を適切に起動させるという問題があります。別の答えには解決策がありました。dataTypeまとめて外します。の括弧data: (gender: gender})は不要ですが、無害です。

最後にデザインの考察。同じスクリプトを使用して JSON 応答に応答しているため、ページが最初に読み込まれるときに、$_GET['gender']未定義の PHP 通知が生成されます (構成によってはこのエラーが抑制される場合がありますが、次のようなエラーが発生しますUndefined index: gender in...)。次に、AJAX 応答が届くと、元のドキュメントにあるすべての Javascript と HTML を含む完全な Web ページになります。

$_GET['gender']このようにする代わりに、が定義されているかどうかに基づいて完全な応答を変更することをお勧めします。

自分でハックしなければならなかったので、動作するバージョンを投稿しました。それが役に立てば幸い!

<?php
if( array_key_exists( 'gender', $_GET ) ){ 
    $userAnswer = $_GET['gender']; 
    echo $userAnswer;
    exit;
}
?><!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
 var gender = 'male';
$(document).ready( function() {
 $(".generate").click(function(){
  $.ajax({
     url: document.location, //This is the current doc
     type: "GET",
     // dataType:'json', // add json datatype to get json
     data: ({gender:gender}),
     success: function(data){
         console.log(data);
     }
  });     
 });
});
</script>
</head>
 <body>
    <button class="generate">Generate</button>
 </body>
</html>
于 2013-11-10T21:52:19.157 に答える
0

交換: dataType:'json', // add json datatype to get json data: ({gender:gender}),

に: data: {gender:gender},

と:

<?php

$userAnswer = $_GET['gender']; 

echo $userAnswer;

?>
于 2013-11-10T21:34:31.680 に答える