使用AJAX处理不同类型的PHP响应

时间:2014-11-17 09:18:33

标签: javascript php jquery ajax

我正在设计一些PHP页面来处理表单。在这些页面中,我想在结果成功时重定向,或者在出现错误时打印消息。页面结构如下:

$arg = $_POST["arg"];
if (isset($arg)) {
    if (function($arg)) {
        header ("Location: page2.php");
    }
    else {
        echo "Response was not successfully";
    }
}
else {
    echo "$arg parameter was not defined";
}

当我需要打印消息时,我使用cftoast for JQuery(http://www.jqueryscript.net/other/Android-Style-jQuery-Toaster-Messages-Plugin-cftoaster.html) 要处理所有表单我正在使用此Javascript函数:

$(document).ready(function() {
$("#asynchronousForm").submit(function() {
    $.ajax({
        type: $(this).attr('method'),
        url: $(this).attr('action'),
        data: $(this).serialize(),

        success: function(data) {
            $("body").cftoaster({content: data});
            window.location.href = ""; //Refresh page to clear possible errors
        }
    })   
    return false;
});

我的问题是,当表单重定向时,有时会出现没有重定向的问题,并显示空的吐司,刷新页面和重复的输入字段......如何解决这个问题?我使用JQueryMobile作为我网页的骨架。

1 个答案:

答案 0 :(得分:1)

处理AJAX响应的一个好方法是使用JSON。 它允许您发送多个数据并根据AJAX结果执行重定向或显示消息。

在PHP中,您可以使用json_encode()将数组转换为JSON。

$arg = $_POST["arg"];
if (isset($arg)) {
    if (function($arg)) {
        exit(json_encode(array('redirect' => 'page2.php')));
    }
    else {
        exit(json_encode(array('message' => 'Response was not successfully')));
    }
}
else {
    exit(json_encode(array('message' => $arg.' parameter was not defined')));
}

AJAX: 您只需添加dataType: 'json'即可。 您也可以使用$.getJSON()

$.ajax({
    type: $(this).attr('method'),
    url: $(this).attr('action'),
    data: $(this).serialize(),
    dataType: 'json',
    success: function(json) {
        if ( json.redirect )
            window.location.href = json.redirect;
        else
            $("body").cftoaster({content: json.message});
    }
})