2016-03-21 34 views
-1

Ajax kullanarak form verilerini gönderiyorum ve bunlar veritabanına başarıyla kaydedildi ve yanıt verisini uyarıyorum. Şimdi geri dönen verileri Ajax kullanarak başka bir işlevi çağırmak için yanıt olarak kullanmak istiyorum ve bunları parametre olarak iletmek, böylece çağrılan işleve veriyi almak ve web sayfasında görüntülemek için kullanılabilir.Başarılı bir şekilde veri gönderildikten sonra ajax'te nasıl yönlendirilir?

sorun verileri alarma geçirildi, ben Ajax kullanarak çağrı işlevi ben window.location.href gibi bazı işlevleri kullanırken, hatta İşte

yürütülmez window.location.replace, window.location.reload yanıt örnek kod

olduğunu olmamasıdır
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

kullanabilirsiniz. – Roberto

+0

Hata ayıklama yardım soruları [yardım] 'a göre bir [mcve] gerektirir. Kodunuz minimal değildir. Lütfen kodunuzun Minimal olduğundan emin olmak için sorunuzu [düzenleyin] (yalnızca sorununuzu sorunuzu yeniden oluşturmak için gerekli olan kod), Tamamla (kullanıcıların sorununuzu çoğaltmak için başka bir şeye ihtiyaç duymaz) ve Verifiable (sağlanan kod çoğaltılır) karşı karşıya olduğunuz kesin sorun). Senin soru olduğu gibi Stack Overflow için konu dışı. Bunun da ortak bir [downvote reason] olduğunu unutmayın (http://idownvotedyoubecause.com/so/TooMuchCode). –

cevap

-1

Yönlendirme URL'nizi ajax öğesinin success işlevine koymalısınız. (jQuery kullanıyorsanız). Javascript kodları senkronize olmayan bir şekilde çalıştırdığından ve muhtemelen isteğinize yanıt almadan kodunuz çalışmaya çalışır.

0

Seni doğru anlıyorsam, böyle bir şeye ihtiyacın var mı?

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

Sen denedi kodunu göstermek Lütfen window.open işlevini

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