1

Jquery / JavascriptとAjaxを使用して、ユーザーがチェックしたHTMLラジオボタンの値をPHP変数に渡そうとしています。

以下は、HTML / Javascriptの簡略版です(エラーチェックなどなし)。

<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js"></script>
</head>
<body>

<input type="radio"  name="bus_plan" id="smallBtn" value="1"/>
<input type="radio"  name="bus_plan" id="smallBtn" value="2"/>

<script type="text/javascript">
$(document).ready(function()
{
    $("input[name=bus_plan]").on('change', function(){
    var $postID = $('input:radio[name=bus_plan]:checked').val();
    $postID = "="+$postID;
    });
    $.ajax ({
       type: "GET",
       url: "localhost/ajax/product-group.php",
       data: {"postID" : $postID }
    });
});
</script>
</body>
</html>

以下は、PHPプログラムの簡略版(localhost / ajax / product-group.php)です。

<?php
  $postid = $_GET['postID']; 
  echo "The PostID is ".$postid;
?>

これはMAMPスタックで実行されています。

Javascriptは$.ajax呼び出しまで機能し、その後PHPプログラム(localhost / ajax / product-group.php)が「呼び出される」ことはありません。

アドバイスや助けをいただければ幸いです。

ありがとうございました。

4

2 に答える 2

0

交換:

$("input[name=bus_plan]").on('change', function(){
   var $postID = $('input:radio[name=bus_plan]:checked').val();
   $postID = "="+$postID;
});

$.ajax ({
   type: "GET",
   url: "localhost/ajax/product-group.php",
   data: {"postID" : $postID }
});

と:

$("input[name=bus_plan]").on('change', function(){
    var $postID = $('input:radio[name=bus_plan]:checked').val();
    $postID = "="+$postID;
    $.ajax ({
       type: "GET",
       url: "localhost/ajax/product-group.php",
       data: {"postID" : $postID }
    });
});

または、コードを使用して、オプションにasync=falseを追加してajaxを非同期にします

あなたのコードでは、ラジオボタンが変更される前または非同期以降にajaxがいつ呼び出されるかわからないので、ajaxオプションとしてasync = falseを追加すると、同期して実行されるようになります

于 2013-02-05T23:23:41.473 に答える
0

コードを適切にインデントするまで、問題を実際に確認することはできません。

$("input[name=bus_plan]").on('change', function() {
    var $postID = $('input:radio[name=bus_plan]:checked').val();
    $postID = "="+$postID;
});
$.ajax ({
   type: "GET",
   url: "localhost/ajax/product-group.php",
   data: {"postID" : $postID }
});

いくつかの問題:

  1. あなた$postIDは変更ハンドラに対してローカルです
  2. $.ajax()すぐに実行されます。
  3. URL にhttp://スキーマがありません。

$.ajax()何かが変更されたときにのみ実行されるように、呼び出しも内部に移動する必要があります。

$("input[name=bus_plan]").on('change', function() {
    var $postID = "=" + $('input:radio[name=bus_plan]:checked').val();
    $.ajax ({
       type: "GET",
       url: "http://localhost/ajax/product-group.php",
       data: {"postID" : $postID }
    });
});
于 2013-02-05T23:28:36.963 に答える