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

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

问题描述:

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

的问题是,当数据被惊动,我调用使用Ajax的功能没有响应,甚至当我使用一些功能,如window.location.hrefwindow.location.replacewindow.location.reload他们不执行

下面是示例代码

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); 
} 
+1

请表明您已经尝试的代码。 – Roberto

+0

调试帮助问题需要按[帮助]提供[mcve]。你的代码不是最小的。请[编辑]你的问题,以确保你的代码是最小的(只有在你的问题中重现你的问题所需的代码),完整(用户不需要其他任何东西来重现你的问题),和可验证的(提供的代码重现你正面临的确切问题)。因为这是你的问题是堆栈溢出的主题。请注意,这也是一个常见的[downvote reason](http://idownvotedyoubecause.com/so/TooMuchCode)。 –

你应该把你的重定向url在success函数的ajax。 (如果你使用jQuery)。由于JavaScript异步运行代码,并且可能在您收到来自请求的响应之前,您的代码尝试运行。

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

$.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; 
      } 
     }); 
    } 
}); 

您可以使用window.open功能

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