0

我有点不熟悉jQuery/ajax

我一直在使用$.post..发送和接收消息,但是它极大地改善了我的网站。

我需要一个工具来将 ajax cal 发送到服务器进行验证

如果验证成功,那么我希望服务器重定向,如果没有,它应该返回页面并显示错误消息。

我的问题是哪个jQuery电话最适合这个。

根据我$.post('....')在服务器上使用和重定向的经验,由于某种原因它不会重定向。

4

4 回答 4

0

JS:

$('#submitButtton').click(function(){
    $.ajax({
        dataType: "json",
        type: 'POST',
        url: url/to/ajax-results.php',
        data: { $('form#my-form').serialize(); }
    }).done(function(data){
        if(data.response == 'error') {
            $('#results').html('<div class="error">'+data.report+'</div>');
            $('#results').show();
            return false;
        }

        window.location.href = data.redirect
    });
});

PHP:

<?php
$errors = array();

$val1 = $_POST['val1'];
if(empty($val1)) {
    $errors[] = 'val1 cannot be empty';
}

if(count($errors) > 0) {
    echo json_encode(array(
        'response' => 'error',
        'report' => 'send your errors array, or custom error message'
    ));
    exit();
} else {
    echo json_encode(array(
        'response' => 'ok',
        'redirect' => 'http://www.domain.com/url/to/redirect'
    ));
    exit();
}

?>
于 2013-07-09T07:40:03.957 回答
0

您可以在 ajax 调用中使用另一个 ajax 调用,或者只是触发表单提交。

$("form").on("submit", function (e) {
    var $this = $(this);
    e.preventDefault();
    $.get("validate.php", $this.serialize()).done(function (valid) {
        if (valid) {
            $this.trigger("submit");
            //OR
            $.post("submit.php").done(function () { window.location = next; });
        }
    });
});
于 2013-07-09T07:30:34.590 回答
0

如果您使用 header() 使用 PHP 进行重定向,它不会使用 ajax 进行重定向,因为内容已经发送到客户端(您只能在处理任何数据之前使用此功能)

您应该尝试通过 javascript 重定向,而不是使用 window.location.href="my new page"

您可以在以下链接中找到更多信息

http://ntt.cc/2008/01/21/5-ways-to-redirect-url-with-javascript.html http://php.net/manual/en/function.header.php

如果您没有使用 PHP 重定向,那么我很抱歉

于 2013-07-09T07:31:16.870 回答
0

您可以使用其基础功能$.post$.ajax

$.ajax({
                    url: 'url',
                    data: 'json_or_string',
                    type: 'POST',
                    dataType: 'json',
                    success: function(json) {
                        if (json.clear == 1) {
                                            document.location.href = "redirect";
                        } else {
                        $('#errormessage').html('Error Validation');    
                        }

                    },
                    error: function (error) {

                    },


                });
于 2013-07-09T07:31:35.307 回答