Ajax函数学习


Ajax function learning

我需要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()函数的响应。