我不知道我在ajax调用中做错了什么。我想将数据返回到我的脚本并使用它,但它没有返回结果。以下是我想澄清的一些内容,以及我对ajax编程的新手。如果ajax调用成功并将结果返回给脚本。结果如何在脚本中。我是否必须创建一个包含结果的数组或... 这是html
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" id="reserveform">
<div id="response"></div>
<div>
<label>Name</label><input type="text" name="name" id="nameid">
</div>
<div>
<label>Phone Number</label><input type="text" name="phone" id="phoneid">
</div>
<div>
<button type="submit" class="btn" id="btnsubmit">Submit</button>
</div>
</form>
<div id="success"></div>
//my script
$('#btnsubmit').click(function(e){
e.preventDefault();
var nameid = $('#nameid').val();
var phoneid = $('#phoneid').val();
var validate_msg = '';
if (nameid == ''){
validate_msg = '<p> Name is Required. </p>';
}
if (phoneid == '' || ($.isNumeric(phoneid) == false)){
validate_msg += '<p> Phone field is either empty or non numeric. </p>';
}
if (validate_msg != ''){
$('#response').addClass('error').html('<strong>Please correct the errors below </strong>' + validate_msg);
} else {
var formData = $('form #reserveForm').serialize();
submitForm(formData);
}
});
function submitForm(formData){
$.ajax({
type: 'POST',
url: 'reservation.php',
data:formData,
dataType:'json',
success: function(data){
$("#success").html(data);
},
error: function(XMLHttpResponse, textStatus, errorThrown){
$('#success').removeClass().addClass('error').html('<p>There was an ' + errorThrown + ' due to ' + textStatus + 'condition');
}
});
}
答案 0 :(得分:1)
如果您正在尝试ajax form submission
并需要在成功div without refresh
中填充结果,则需要return false
不要使用
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" id="reserveform">
此处不需要表单中的操作,请尝试
<form id="reserveform" onsubmit="return submitForm();">
在函数中使用form serialize
,因此表单中的所有输入元素值都可用
function submitForm(){
var formData = $("#reserveform").serialize();
$.ajax({
type: 'POST',
url: 'reservation.php',
data:formData,
dataType:'json',
success: function(data){
$("#success").html(data);
},
error: function(XMLHttpResponse, textStatus, errorThrown){
$('#success').removeClass().addClass('error').html('<p>There was an ' + errorThrown + ' due to ' + textStatus + 'condition');
}
});
return false; // use this otherwise the form will be submitted and results an entire page refresh
}
答案 1 :(得分:0)
请试试这个
你必须将btnsubmit点击事件放在onload或document ready
中
$(document).ready(function()
{
$('#btnsubmit').click(function(e){
e.preventDefault();
var nameid = $('#nameid').val();
var phoneid = $('#phoneid').val();
var validate_msg = '';
if (nameid == ''){
validate_msg = '<p> Name is Required. </p>';
}
if (phoneid == '' || ($.isNumeric(phoneid) == false)){
validate_msg += '<p> Phone field is either empty or non numeric. </p>';
}
if (validate_msg != ''){
$('#response').addClass('error').html('<strong>Please correct the errors below </strong>' + validate_msg);
} else {
var formData = $('form #reserveForm').serialize();
submitForm(formData);
}
});
}
);
答案 2 :(得分:0)
您无法使用此$("#success").html(data);
,因为数据采用json格式。这里,数据是一个对象。您需要解析它并分配给标签。
答案 3 :(得分:0)
我看到您将表单配置为提交到您已经存在的同一文档。这很好,我们一直这样做。
但是,您也停止提交表单,然后使用AJAX提交值。您指定reservation.php
作为ajax处理器。这是你在同一个PHP页面吗?如果是这样,那么我知道问题是什么:你做不到。
按照设计,AJAX必须使用外部PHP文件来处理AJAX。如果您尝试在同一文档中执行此操作,则AJAX将仅回显文档本身的完整HTML。
简答:使用外部PHP文件。这是设计的。
有关此问题的详细信息,请参阅this other answer。
有关AJAX的更多信息以及获取PHP处理脚本信息以及从PHP处理脚本返回信息,请参阅这些其他帖子: