JQuery选择器可以工作,但不能通过$post
我有一个jquery脚本,它获取所选单选按钮的值,并将其发布到另一个要处理的php脚本。我怀疑选择器有问题,但我使用了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”字段,并且显示了正确的值 谢谢你的
$("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');
});
});
});