我正在尝试使用jQuery中的$ .ajax()函数调用php文件,但它无法正常工作。单击页面上的按钮时,将运行以下代码:
if($error === false) {
alert($error);
$.ajax({
url: '/new-user.php',
type: 'POST',
data: {
name: $('#name').val(),
email: $('#name').val(),
password: $('#name').val()
}
});
这是我的表格:
<form onClick="return false;" class="reg-form">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="name">First Name</label>
<input type="text" id="name" class="form-control" autofocus="autofocus">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="email">Email Address</label>
<input type="text" id="email" class="form-control">
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="password">Password</label>
<input type="password" id="password" class="form-control">
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label for="password-confirm">Confirm Password</label>
<input type="password" id="password-confirm" class="form-control">
</div>
</div>
</div>
<button class="btn trans reg-btn">Sign Up</button>
<div class="reg-msg">
<span id="password-error-msg">Passwords do not match.</span>
</div>
</form>
我已将表单设置为onClick以返回false,以便表单在提交时不会重新加载页面,以便jQuery可以运行。
非常感谢任何帮助。
答案 0 :(得分:16)
人们使用表单的主要原因是您可以定义
操作(在您的情况下为php脚本),
方法(GET或POST)和
提交按钮,捕获表单中的所有信息并自动将其发送到服务器。
当您有20-30个输入或处理多个文件输入时,这很好。在您的情况下,您正在处理ajax函数中的数据检索,您没有定义提交按钮,操作或方法,因此您可以通过完全不使用表单来使事情变得更容易....
$.ajax({
url: '/new-user.php',
type: 'POST',
dataType: "json",
data: {
name: $('#name').val(),
email: $('#email').val(),
password: $('#password').val()
}
}).done(function(data){
alert(JSON.stringify(data));
});
为简单起见,我省略了格式化div ...
<input type="text" id="name" class="form-control" autofocus="autofocus">
<input type="text" id="email" class="form-control">
<input type="password" id="password" class="form-control">
上面的代码将获取输入中的数据,将其发送到php脚本并输出从警报中的PHP脚本发回的数据。
最重要的是,您的页面不会刷新!
答案 1 :(得分:1)
我实际上是将表单数据序列化,因为它的代码较少。另外,您可以使用多种形式。例如,您可以拥有一个隐藏的输入,其中包含一个任务编号,并有一个PHP脚本来委派任务。或者,您可以为submit函数提供另一个变量来传递脚本的位置。因此,我提交的表格如下。
HTML:
<form onsubmit="submitForm('#myForm'); return false;" id='myForm'>
<input type='text' name='name'/>
<input type='text' name='email'/>
<input type='text' name='password'/>
<input type='submit'/>
</form>
使用Javascript:
function submitForm(formId){
var formData = $.(formId).serialize();
$.ajax({
url: '/script.php',
type: 'POST',
data: formData,
success:function(response){
alert(response);
}
});
}
答案 2 :(得分:0)
请尝试以下代码:
$(".reg-btn").click(function(e)
{
e.preventDefault();
$.ajax({
url: '/new-user.php',
type: 'POST',
data: {
name: $('#name').val(),
email: $('#name').val(),
password: $('#name').val()
},
success:function(response){
//Do something here...
}
});
});
请注意,您的表单上没有提交按钮。所以返回false是没用的。