[英]AJAX + PHP Form not passing variables?
因此,通常我可以使我的ajax正常工作,但是由于某些原因,我的脚本无法将变量传递给PHP表单。 我已经尝试调试了一段时间,希望有新的眼睛可以指出我遇到的任何愚蠢的错误(为简单起见,我将其剥离到裸露的骨头上,这不会传递变量)。
AJAX +表格
$('#formid').on('submit', function(e){
e.preventDefault();
$.ajax({
type: "POST",
url: 'page.php',
data: $(this).serialize(),
success: function(data) {
alert(data);
}
});
});
<form id="formid" method="post">
<input type="text" name="name">
<input type="submit" value="Add">
</form>
page.php文件
//Get Variables
$name = $_POST['name'];
echo 'Name is: '.$name;
这应该显示一个警告,上面写着“名称是(无论用户在表单中输入什么)”
但是,它不会回显用户在表单中提交的内容。 有人能看到这个脚本有问题吗?
将数据发布回php页面data: $(this).serialize()
出错data: $(this).serialize()
代码看起来很干净,但是在ajax函数中执行$(this).serialize()
时,上下文可能会出现问题。 最好先将数据保存到变量中。 结果看起来像这样:
$('#formid').on('submit', function(e){
e.preventDefault();
var my_data = $(this).serialize();
$.ajax({
type: "POST",
url: 'page.php',
data: my_data,
success: function(data) {
alert(data);
}
});
});
如果这不起作用,那么实际上可能是PHP方面的问题。
编辑:添加了JS的其余部分,使其更加简洁明了。
您应该将表单方法设置为POST:
<form id="formid" method="post">
您的代码似乎没问题。 $(this).serialize()
应该不是问题,但如果您这样认为,则可以给文本输入一个id并尝试data: {name: $('#your-input-id-here').val()}
。
另一件事可能是e.preventDefault();
可能无法正常工作。 尝试将其放置在ajax调用之后,或将其替换为return false;
在ajax调用之后。
谢谢您的所有答复,我不知道为什么,但是在id前面添加表格使其生效。 $('form#formid')
我的页面上必须有重复的ID,而没有意识到
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.