JQuery选择器可以工作,但不能通过$post

JQuery选择器可以工作,但不能通过$post,jquery,post,jquery-selectors,Jquery,Post,Jquery Selectors,我有一个jquery脚本,它获取所选单选按钮的值,并将其发布到另一个要处理的php脚本。我怀疑选择器有问题,但我使用了 $("input[name='act']:checked").val() 在firebug控制台中,它返回了正确的值 此外,我还使用了一个警报来显示所选值的弹出窗口,并使用以下命令返回正确的值: alert($("input[name='act']:checked").val()); 代码看起来也很可靠,因为我创建了一个要发布的“test”字段,并且显示了正确的值 谢谢你的

我有一个jquery脚本,它获取所选单选按钮的值,并将其发布到另一个要处理的php脚本。我怀疑选择器有问题,但我使用了

$("input[name='act']:checked").val()
在firebug控制台中,它返回了正确的值

此外,我还使用了一个警报来显示所选值的弹出窗口,并使用以下命令返回正确的值:

alert($("input[name='act']:checked").val());
代码看起来也很可靠,因为我创建了一个要发布的“test”字段,并且显示了正确的值

谢谢你的帮助

jquery代码:

<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>

<script type="text/javascript" language="javascript">
  $(document).ready(function() {
      $("#driver").click(function(event){
        alert($("input[name='act']:checked").val());

                 $('#mainarea').hide('fast');
                 $('#mainarea').empty();

          $.post(
           "facultyoptions.php",
           {
                act: $("input[name='act']:checked").val(),
                test: 'test'
           },
            function(data) {
                $('#mainarea').empty();
                $('#mainarea').append(data);
                $('#mainarea').show('slow');
             }

          );
      });
   });



   </script>

$(文档).ready(函数(){
$(“#驱动程序”)。单击(函数(事件){
警报($($(输入[name='act']:选中”).val();
$('mainarea')。隐藏('fast');
$('#main area').empty();
美元邮政(
“facultyoptions.php”,
{
act:$(“输入[name='act']:已选中”).val(),
测试:“测试”
},
功能(数据){
$('#main area').empty();
$('#main area')。追加(数据);
$('mainarea')。show('slow');
}
);
});
});
HTML





facultyoptions.php

<?php

echo 'HI</br>';

echo $_POST['act'];

echo $_POST['test'];

?>

结果:

你好

Test

您需要
的末尾返回false
单击
处理程序,或者在处理程序的开头使用
event.preventDefault()

否则,您将执行刷新页面的正常提交

所以

哦,请删除警报,因为这可能会干扰您停止正常提交的尝试


更新以了解完整性

在评论中讨论之后,我们确定了
.empty()
调用的问题


相关的
输入
元素位于
#main区域
元素内,因此在访问该元素之前将其删除。

您不需要提交表单

因此,附加到submit事件并使用preventDefault-空后无需追加

$(function() {
  $("#facultyportal").on("submit",function(event){
    event.preventDefault(); // stop submission
    var act = $("input[name='act']:checked").val();// save before emptying
    $('#mainarea').empty().hide('fast');
    $.post("facultyoptions.php",{act: act,test: 'test'},
      function(data) {
        $('#mainarea').html(data).show('slow');
    });
  });
});

如果有帮助,在Firebug中,您可以使用Net选项卡查看确切的HTTP请求(查看标题/发布内容),感谢Net选项卡信息。我给了它一个机会,它显示只有测试字段被发布。我尝试了你的代码,并用输入类型=“提交”替换了我的输入类型=“按钮”,但它仍然不起作用。“不起作用”是什么意思?控制台中的消息?正常表单提交是否返回预期的数据?与原始帖子中的输出相同。因此,我最初不调用empty的想法会显示问题,尽管如果要删除以前的结果,您需要使用empty。。。希兹。不管怎么说,我的代码现在也可以用了。我试过你的代码,还是没有成功。我的印象是,如果我使用type=“button”,表单将不会提交,因此我不必返回false/preventDefault()@rawrzors也许你是对的。。打开控制台,检查数据是否已提交..Firebug说只有测试字段被发布到facultyoptions.php。不知道为什么。@rawrzors是
#main区域中的
输入
元素?因为您
empty()
在访问输入之前(如果是这样,
input
将从DOM中删除)…就是这样!一些如此愚蠢和简单的事情。我删除了.empty(),一切正常,谢谢。
  $(document).ready(function() {
      $("#driver").click(function(event){
            //alert($("input[name='act']:checked").val());

            $('#mainarea').hide('fast');
            $('#mainarea').empty();

            $.post("facultyoptions.php",{
                  act: $("input[name='act']:checked").val(),
                  test: 'test'
                },function(data) {
                   $('#mainarea').empty();
                   $('#mainarea').append(data);
                   $('#mainarea').show('slow');
                });

            return false;
      });
   });
$(function() {
  $("#facultyportal").on("submit",function(event){
    event.preventDefault(); // stop submission
    var act = $("input[name='act']:checked").val();// save before emptying
    $('#mainarea').empty().hide('fast');
    $.post("facultyoptions.php",{act: act,test: 'test'},
      function(data) {
        $('#mainarea').html(data).show('slow');
    });
  });
});