Php Ajax调用和返回结果
我不知道我在ajax调用中做错了什么。我想将数据返回到脚本并使用它,但它不会返回结果。以下是一些我想澄清的事情,我对ajax编程还不熟悉。如果ajax调用成功并将结果返回给脚本。结果将显示在脚本中的何处。我需要创建一个数组来保存结果还是。。。 这是htmlPhp Ajax调用和返回结果,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我不知道我在ajax调用中做错了什么。我想将数据返回到脚本并使用它,但它不会返回结果。以下是一些我想澄清的事情,我对ajax编程还不熟悉。如果ajax调用成功并将结果返回给脚本。结果将显示在脚本中的何处。我需要创建一个数组来保存结果还是。。。 这是html <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" id="reserveform"> <div id="respons
<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');
}
});
}
请试试这个
您必须将btnsubmit click事件放入onload或document ready中
$(文档).ready(函数()
{
$('#btnsupmit')。单击(函数(e){
e、 预防默认值();
var nameid=$('#nameid').val();
var phoneid=$('#phoneid').val();
var validate_msg='';
如果(nameid=''){
验证消息=“名称是必需的。”;
}
if(phoneid=''| |($.isNumeric(phoneid==false)){
验证_msg+='电话字段为空或非数字。';
}
如果(验证消息!=''){
$(“#response”).addClass('error').html(“请更正下面的错误”“+validate\u msg);
}否则{
var formData=$('form#reserveForm').serialize();
提交格式(formData);
}
});
}
);
你不能这样使用$(“#success”).html(数据)因为数据是json格式的。这里,数据是一个对象。您需要解析它并将其分配给标记。如果您尝试ajax表单提交
,并且需要在不刷新的情况下将结果填充到success div,则需要返回false
不要使用
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" id="reserveform">
我看到您已将表单配置为提交到已存在的同一文档中。这很好,我们一直都这么做
但是,您也会停止表单提交,然后使用AJAX提交值。您可以指定reservation.php
作为ajax处理器。这是您已经在的同一个PHP页面吗?如果是这样,那么我知道问题是什么:你不能那样做
根据设计,AJAX必须使用外部PHP文件来处理AJAX。如果您试图在同一文档中执行此操作,AJAX将只回显文档本身的完整HTML
简短回答:使用外部PHP文件。这是故意的
有关此问题的详细信息,请参阅
有关AJAX的更多信息,请参阅其他文章,将信息输入PHP处理脚本,并从PHP处理脚本返回信息:
如果您的PHP文件($\u SERVER['PHP\u SELF']
)的名称是reservation.PHP
,请参阅下面我的答案以获得解决方案。这个问题的解决是否令您满意?如果是,请接受答案以结束问题。否则,请发布其他信息,以便我们可以进一步帮助您。谢谢,我使用了一个名为process.php的外部脚本。如何获取新脚本中的数据。我是否仍然需要使用ajax的$\u POST手动获取数据,并发送值供我直接使用。@是否在我的回答中添加了其他示例,如上所述,如果请求成功,我尝试隐藏表单并显示消息。每次我尝试它时,它既不隐藏也不显示消息。我做错了什么?我试图进行必要的更正并创建一个外部文件,但我得到了这个奇怪的错误消息。“{”error:“Shell表单不验证{'html\u initial\u name':u'i…”以下是链接
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" id="reserveform">
<form id="reserveform" onsubmit="return submitForm();">
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
}