成功发布数据后如何在ajax中重定向

时间:2016-03-21 14:09:41

标签: javascript php jquery ajax

我使用Ajax提交表单数据,并且它们已成功保存在数据库中,并且我能够提醒响应数据。我现在想要使用返回的数据作为响应来使用Ajax调用另一个函数并将它们作为参数传递,以便它们可以用于获取数据并在网页上显示它们。

问题在于,当数据被提醒时,即使我使用window.location.hrefwindow.location.replacewindow.location.reload之类的函数,我使用Ajax调用的函数也没有响应执行

以下是示例代码

submitHandler: function(form) {
    /*errorHandler.hide(); */

    var el = $(div);
    el.block({
        overlayCSS: {
            backgroundColor: '#fff'
        },
        message: '<i class="fa fa-refresh fa-spin"></i>',
        css: {
            border: 'none',
            color: '#333',
            background: 'none'
        }
    });
    /*Set off for database validation */
    $('#name1').removeClass('has-error');
    $('#name1 .help-block').empty();
    $('#date1').removeClass('has-error');
    $('#date1 .help-block').empty();
    /*end database validation */

    /*ajax options */
    var options = {
        /*target:        '#output2',    target element(s) to be updated with server response */
        success: function(data, textStatus, XMLHttpRequest) {
            el.unblock();
            if (!data.success) {
                /*append error message on the form for each control and database validation*/
                console.log(data);
                if (data.errors.name1) {
                    $('#name1').addClass('has-error');
                    $('#name1 .help-block').html(data.errors.name1);
                }
            } else {
                var business_id = data.business_id;
                var bnm_app_id = data.bnm_app_id;
                var name = data.name;
                var doc = data.doc;

                alert(business_id);
                alert(bnm_app_id);
                alert(name);
                alert(doc);

                if (window.XMLHttpRequest) {
                    myObject = new XMLHttpRequest();
                } else if (window.ActiveXObject) {
                    myObject = new ActiveXObject('Micrsoft.XMLHTTP');
                    myObject.overrideMimeType('text/xml');
                }

                myObject.onreadystatechange = function() {
                    data = myObject.responseText;
                    if (myObject.readyState == 4) {
                        //document.getElementById('step-2').innerHTML = data;
                        window.location.reload(true);
                    }
                }; //specify name of function that will handle server response........

                myObject.open('GET', '<?php echo base_url()."bn_application/register";?>?bnm_app_id=' + bnm_app_id + '&doc=' + doc + '&business_id=' + business_id + '&name=' + name, true);
                myObject.send();


            }
        },
        error: function(xhr, textStatus, errorThrown) {
            el.unblock();
            if (xhr.responseText === undefined) {
                $.gritter.add({
                    /* (string | mandatory) the heading of the notification */
                    title: 'Connection timed out',
                    class_name: 'gritter-black'
                });
            } else {
                var myWindow = window.open("Error", "MsgWindow", "width=900, height=400");
                myWindow.document.write(xhr.responseText);
            }
            /*clear controls that do not need to keep its previous info */
        },
        url: home + 'bn_application/save_clearance_name',
        /* override for form's 'action' attribute*/
        data: {
            name1_percent: name1_percent
        },
        type: 'post',
        /* 'get' or 'post', override for form's 'method' attribute*/
        dataType: 'json',
        /* 'xml', 'script', or 'json' (expected server response type)*/
        beforeSend: function() {

        },
        uploadProgress: function(event, position, total, percentComplete) {

        },
        complete: function() {

        }
    };
    /*submit form via ajax */
    $('#bn_clearance').ajaxSubmit(options);
}

3 个答案:

答案 0 :(得分:0)

如果我理解你,你需要这样的东西吗?

   $.ajax({
    type: "GET",
    url: baseUrl + 'api/cars',
    success: function (firstResponse) {
        $.ajax({
            type: "GET",
            url: baseUrl + 'api/cars/' + firstResponse[0].Id,
            success: function (secondResponse) {
                window.location.href = secondResponse[0].Make;
            }
        });
    }
});

答案 1 :(得分:0)

您可以使用window.open函数

$("button").click(function(){
    $.ajax({url: "demo_test.txt", success: function(result){
       $("#div1").html(result);
       window.open("http://www.w3schools.com", "_self");
    }});
});

答案 2 :(得分:-1)

您应该将重定向网址放在ajax的success函数中。 (如果你使用的是jQuery)。因为javascript以异步方式运行代码,并且可能在您收到请求响应之前,您的代码会尝试运行。