当我创建数据对象并传递给PHP文件时,我正在使用ajax构建一个简单的注册表单。它显示变量并且不显示该PHP变量的值。 表单的HTML代码是
<form id="myForm" name="myForm" action="" method="POST" class="register">
<p>
<label>Name *</label>
<input name="name" type="text" class="long"/>
</p>
<p>
<label>Institute Name *</label>
<input name="iname" type="text" maxlength="10"/>
</p>
<div>
<button id="button" class="button" name="register">Register »</button>
</div>
</form>
js的代码是
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
var form=$("#myForm").serialize();
$("#button").click(function(){
$.ajax({
type:"POST",
url: "mainlogic.php",
data:form,
success: function(result){
alert(result);
}
});
});
})
</script>
PHP的代码是 (mainlogic.php)
if(isset($_POST)) {
print_r($_POST);//////varaibles having null values if it is set
$name=trim($_POST['name']);
echo $name;
}
答案 0 :(得分:3)
您正在对文档加载序列化表单。在此阶段,表格尚未填写。您应该在按钮单击事件处理程序中序列化您的表单。
$(document).ready(function(){
$("#button").click(function(){
var form=$("#myForm").serialize();
$.ajax({
type:"POST",
url: "mainlogic.php",
data:form,
success: function(result){
alert(result);
}
});
});
})
答案 1 :(得分:1)
在此代码中,您可以在文档准备就绪后序列化空白表单:
<script>
$(document).ready(function(){
var form=$("#myForm").serialize();
$("#button").click(function(){
$.ajax({
type:"POST",
url: "mainlogic.php",
data:form,
success: function(result){
alert(result);
}
});
});
})
</script>
有效点击功能应该如下所示:
$("#button").click(function(){
var form=$("#myForm").serialize();
$.ajax({...
表示 - 点击按钮后立即序列化表单。
答案 2 :(得分:0)
Alpadev得到了正确答案,但这里有一些可以帮助你的潜在客户:
<强> AJAX 强>
您应该在Ajax调用中添加以下error
编码,以便在请求出现问题时显示信息:
$.ajax({
[…]
error: function(jqXHR, textStatus, errorThrown){
// Error handling
console.log(form); // where “form” is your variable
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
});
<强> $ _ POST 强>
$ _ POST指的是页面传递给服务器的所有变量。 您需要使用变量名称在php中访问它。
查看有关$ _POST的详细信息:
http://php.net/manual/en/reserved.variables.post.php
print_r($_POST);
应输出您网页上所有已发布变量的数组
确保:
⋅Ajax请求正确结束,
⋅print_r
指令不受其他评估为false的东西的限制,
·数组显示在页面中,不会被其他元素隐藏。 (您可以查看html源代码而不是输出页面以确定它。)
答案 3 :(得分:0)
var form = $("#myForm").serialize();
这是从表单收集数据的行。
您在$(document).ready(function() {
之后立即拥有它,因此您会在DOM准备就绪后立即收集数据 。这不起作用,因为在用户有机会填写表格之前 。
单击按钮时,您需要从表单中收集数据。在click事件处理函数中移动该行。
答案 4 :(得分:0)
问题是,在加载页面时,如果它们还没有值,则在开始时计算表单值。您必须在按钮绑定中移动变量表单计算。
<script>
$(document).ready(function(){
$("#button").click(function(){
var form=$("#myForm").serialize();
$.ajax({
type:"POST",
url: "mainlogic.php",
data:form,
success: function(result){
alert(result);
}
});
});
})
</script>