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,因为它是异步的,添加async=false作为 ajax 选项,您将确保它将同步执行

于 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 回答