我有以下html脚本:
<form id="myForm">
...
<input hidden name="myInput" id="myInput">
...
</form>
在某处我为隐藏的输入设置了一个值:
$('#myInput').val('a value here');
然后,我将表单序列化并将其发布到URL:
$.post("my_url_here", $("#myForm").serialize())
在我处理这篇文章的地方,我尝试使用以下方法访问我的隐藏输入值:
$_POST['myInput']
但它显示null(实际为空),当我希望它具有我之前设置的值。如果我明确设置这样的值:
<input hidden name="myInput" id="myInput" value="explicit_value">
它工作正常。知道发生了什么吗?
UPDATE(整个代码,顺序与我的实际代码相同):
<script>
jQuery( document ).ready(function( $ ) {
eventHandler(){
...
$('#myInput').val('a value here');
myPostFunction();
}
});
</script>
<form id="myForm">
...
<input hidden name="myInput" id="myInput">
...
</form>
<script>
jQuery( document ).ready(function( $ ) {
window.myPostFunction= function () {
alert($("#myForm").serialize());//It shows myField=&otherField=value
alert($("#myInput").val());// This shows the correct value.
$.post("my_url_here", $("#myForm").serialize());
}
});
</script>
答案 0 :(得分:0)
这应该有用,但要尝试与我的比较,看看结果:)
你正在使用PHP吗?
尝试创建一个名为sendAjax.php的新php文件并输入:
<!doctype html>
<html>
<head>
<title>http://stackoverflow.com/questions/35281545/jquery-hidden-field-value-null-when-form-is-serialized-and-posted</title>
<script src="jquery-1.7.1.min.js"></script>
</head>
<body>
<form id="myForm">
<input type="hidden" name="myInput" id="myInput"/>
</form>
<script>
(function(){
$('#myInput').val('a value here');
$.post("receiveAjax.php", $("#myForm").serialize(),
function(data){
alert(data);
});
})();
</script>
</body>
</html>
创建另一个名为receiveAjax.php的新php文件,将其放入与sendAjax.php相同的文件夹中并输入:
<?php
$data = $_POST;
var_dump($data);
?>
答案 1 :(得分:0)
“hidden”应该是“type”属性的值,我不知道它是否相关但是尝试替换:
<input hidden name="myInput" id="myInput">
通过:
<input type="hidden" name="myInput" id="myInput">
答案 2 :(得分:0)
好的,谢谢大家的帮助,但最后我找到了解决方案。这个领域的名称并不合适。我只是更改了字段的名称,现在很好。它应该与名称冲突,但我没有意识到它,因为脚本执行正常。在尝试了所有之后,我想改变这个名字......再次,谢谢大家!