我需要Ajax方面的帮助。我在网上得到了这个代码。此功能用于检查contact.php
我有几个问题,所以有人可以帮我。
我的问题:
1.这个代码好吗?可以运行吗
2.有人能解释一下第4行和第5行的函数是干什么的吗。它似乎向contact.php发送数据,但它返回的是什么?
Ajax:
var validateEmailForm = {
dataType: 'json',
submit: function(form) {
var redirect = false;
$.ajax('contact.php', {data:{'email':form.email.value}}).done(function(data) {
if ( typeof(data) == 'object' ) {
if ( data.status == 'valid') {
form.submit();
} else if(data.status !=='valid' {
alert('The e-mail address entered is wrong.');
}
} else {
alert('Failed to connect to the server.');
}
}
}
}
Contact.php:
<?php
error_reporting(0);
$email = $_POST['email'];
if (isset($_$POST['email']))
{
// How to return valid to the ajax
} else {
// How to return invalid to the ajax.
}
?>
您需要向ajax函数返回一个JSON_encoded数组,如下所示:
$email = $_POST['email'];
$status = false;
if (isset($_$POST['email']))
{
$status = 'success'
} else {
$status = false
}
echo json_encode(array('status' => $status));
?>
此外,将dataType: 'json'
添加到$.ajax()
中,以便延迟函数自动解析它。
删除typeof()
,因为我们知道我们期望得到什么回报。
AJAX比听起来容易得多。你只需要看看几个好的例子。
试试这些:
的一个简单例子
更复杂的示例
根据下拉列表1 中的选择填充下拉列表2
https://stackoverflow.com/questions/25945137/php-fetch-content-from-one-form-and-update-it-in-other-form/25954450#25954450
上面的例子展示了一些东西:
(1) AJAX请求有四种格式-完整的$.ajax()
结构和三种快捷方式结构($.post()
、$.get()
和$.load()
)
在您非常擅长AJAX之前,我建议您使用格式正确的$.ajax()
代码块,这就是上面的示例所展示的。这样的代码块看起来像这样:
$('#formID').submit({
$.ajax({
type: 'post',
url: 'contact.php',
dataType: 'json',
data: 'email=' + form.email.value
}).done(function(data) {
if ( typeof(data) == 'object' ) {
if ( data.status == 'valid') {
form.submit();
} else if(data.status !=='valid' {
alert('The e-mail address entered is wrong.');
return false;
} else {
alert('Failed to connect to the server.');
return false;
}
}
});
});
(2) 在$.ajax()
代码块中,data:
行指定发送到PHP处理器文件的数据。
(3) dataType:
行指定ajax代码块期望从PHP处理器文件接收回的数据类型。默认的dataType是html,除非另有指定。
(4) 在PHP处理器文件中,数据通过echo
命令返回到AJAX代码块。无论该数据是以html、text还是json的形式返回,它都是echo
返回到AJAX例程,如下所示:
<?php
//perform MySQL search here. For eg, get array $result with: $result['firstname'] and $result['lastname']
$out = '<div id="myresponse">';
$out .= 'First Name: <input type="text" value="' .$result['firstname']. '" />';
$out .= 'Last Name: <input type="text" value="' .$result['lastname']. '" />';
$out .= '</div>';
echo $out;
请自己尝试上面的几个例子,你会看到它是如何工作的。
不需要使用json
来发送/返回数据。然而,json
是发送数组数据的一种有用格式,但正如您所看到的,您可以在PHP端构建一个完整的html响应,并回显完成的标记。
因此,要明确回答您的第二个问题,您只需要echo
返回一些数据。PHP文件的任务是:
(1) 从AJAX例程接收数据
(2) 在某种查找中使用这些数据(通常在数据库中),
(3) 构建响应,以及
(4) echo
(NOT return
)返回AJAX例程的success:
或.done()
函数的响应。