如何使用 Javascript 和 Ajax 将 HTML 单选按钮值传递给 PHP 变量?

Posted

技术标签:

【中文标题】如何使用 Javascript 和 Ajax 将 HTML 单选按钮值传递给 PHP 变量?【英文标题】:How do I pass HTML radio button value to a PHP variable using Javascript and Ajax? 【发布时间】:2013-01-21 01:04:48 【问题描述】:

我正在尝试使用 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) 永远不会“调用”。

任何建议或帮助将不胜感激。

谢谢。

【问题讨论】:

【参考方案1】:

替换:

$("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 async

使用您的代码,您不知道在单选按钮更改之前或之后何时调用 ajax,因为它的 asynchronous,添加 async=false 作为 ajax 选项,您将确保它会同步执行

【讨论】:

【参考方案2】:

在正确缩进代码之前,您无法真正看到问题:

$("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 
);

几个问题:

    您的 $postID 是更改处理程序的本地 $.ajax() 立即运行。 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 
    );
);

【讨论】:

感谢 Jack 和 @GGio 的回复。通过添加移动 ajax 调用和添加 ajax 错误处理,ajax 可以正常工作。然而,被调用的 php 程序似乎不起作用,因为 echo 语句从不显示。 (他们在独立运行时这样做)。所以现在代码如下:

以上是关于如何使用 Javascript 和 Ajax 将 HTML 单选按钮值传递给 PHP 变量?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 和 AJAX 将用户重定向到最近和最快的 Web 服务器?

如何使用 JavaScript 和 AJAX 根据邮政编码自动填充城市和州?

如何在 Wordpress 中使用 Ajax 将 Javascript 对象传递给 PHP

如何使用 vanilla javascript 通过 ajax 将多张照片上传到 Laravel 应用程序?

如何使用 AJAX 请求将用户在类变量中的 HTML5 位置从 JavaScript 传递到 Rails 控制器?

使用触发 javascript 验证的 POST 表单和 AJAX 登录到 PHP 文件。无法将数据存储到 PHP