2013-08-08 47 views
7

Tôi đang cố gắng làm mới trang sau cuộc gọi jQuery AJAX. Có vẻ như trang đang làm mới (chỉ đôi khi) trước khi tất cả dữ liệu được truyền đi. Bất cứ ai có thể thấy lý do tại sao bởi đoạn này dưới đây. Tôi có mã làm mới trong hàm thành công nên tôi bối rối.làm mới trang sau khi jquery ajax

Tôi đã thử thêm async = false và điều đó dường như không hoạt động.

function sendRating(rating, reload_on_return) { 

$.ajax({ 
    type: "POST", 
    dataType: 'json', 
    url: window.url_root + cid + "/", 
    data: { 
     "rating": rating.r2/100.0 
    }, 
    success: function(data) { 
     if (data.hasOwnProperty('success')) { 
      console.log("data was sent!"); 

      if (reload_on_return) { 
        location.reload(); 

      } 

     } 
    }, 
    error: function() { 
     console.log("Data didn't get sent!!"); 
    } 
}) 
+0

lý do tại sao không chỉ trả lại dữ liệu bạn cần cập nhật trên trang từ POST của bạn hoặc gọi GET ... Đăng lại chỉ gây phiền toái cho người dùng. – abc123

+0

Bạn có bất kỳ nhật ký nào để hiển thị không? Điều gì khiến bạn nói không phải tất cả dữ liệu chưa được truyền? – axelcdv

+0

Điều này có vẻ chính xác. Có thể mã khác đang gây ra làm mới, hoặc làm mới là trong thực tế xảy ra sau khi dữ liệu trả về? – Jonah

Trả lời

11

Bạn có thể có thể thực hiện setTimeout, để làm cho nó chờ một giây trước khi quá trình làm mới có thể thực thi.

function sendRating(rating, reload_on_return) { 

$.ajax({ 
    type: "POST", 
    dataType: 'json', 
    url: window.url_root + cid + "/", 
    async: false, 
    data: { 
     "rating": rating.r2/100.0 
    }, 
    success: function(data) { 
     if (data.hasOwnProperty('success')) { 
      console.log("data was sent!"); 

      if (reload_on_return) { 
       setTimeout(
        function() 
        { 
        location.reload(); 
        }, 0001);  
      } 

     } 
    }, 
    error: function() { 
     console.log("Data didn't get sent!!"); 
    } 
}) 
+0

Có cách nào để gọi chức năng mới sau khi làm mới trang. –

Các vấn đề liên quan