2014-09-23 71 views
0

你好,我有jQuery的通話功能

$.ajax({ 
     url: 'route_process.php', 
     cache: false, 
     async: false, 
     type: 'post', 
     data: id, 
     dataType: 'html', 
     success: function(data) { 
      data = data.split("brk"); 
      sent_notification(data[1], data[2], data[3], data[4], data[5], data[6], data[7],data[8],data[9],data[10]); 
      alert(data[0]); 
     }, 

Ajax調用我將獲得成功後的一些數據,我的功能使用與其他AJAX。

function sent_notification(type_search, insert_id_search, date_search_array_search, from_city_lat_search, from_city_lng_search, to_city_lat_search, to_city_lng_search, counting, insert_id_search2, date_search_array_search2) { 
     $.ajax({ 
     url:  'sent_hike_drive_notification.php', 
     cache: false, 
     type: 'post', 
     async: true, 
     data: {type: type_search, insert_id: insert_id_search, date_search_array: date_search_array_search, from_city_lat: from_city_lat_search, from_city_lng: from_city_lng_search, to_city_lat: to_city_lat_search, to_city_lng: to_city_lng_search, counter: counting, insert_id2: insert_id_search2, date_search_array2:date_search_array_search2}, 
     dataType: 'html', 
     success: function(data) { 
      } 
     }); 
    } 

基本上從這下ajax我不需要任何成功的數據。可以運行異步。但有時候會發生,我會從第一個函數獲取alert(data [0]),並在confrim OK瀏覽器凍結之後。看起來它正在等待sent_notification函數中的ajax完成。但我不在乎這第二個Ajax的結果,它只是一些通知。正如我所說的,有時只會發生,我認爲這取決於第二個Ajax執行時間。如何修改我的代碼以獲得第一個Ajax的成功,然後使用這個第一個Ajax中的數據執行另一個Ajax,而不會凍結任何瀏覽器。我認爲只是把異步到另一個Ajax應該是可以的。謝謝

+0

不要使用'async:false' – Bergi 2014-09-23 17:28:25

+0

@Bergi你認爲這足以解決問題嗎?我嘗試了並且在第一個ajax確認提醒後仍然凍結。幾秒鐘。 – Vilis 2014-09-23 17:29:34

+0

不太可能,因爲你說它是第二個ajax(已經使用'async:true'),它會凍結。這應該是一個普遍的建議。 – Bergi 2014-09-23 17:32:49

回答

1

不要使用警報,因爲它阻止正在執行的線程。使用console.log(「message here」)進行調試

+1

您可能也想看看有關在不同瀏覽器中使用console.log的答案http://stackoverflow.com/questions/4539253/what-is-console-log – Zack 2014-09-23 17:19:45

+0

謝謝我知道concole.log,但問題是我可以在此警報上單擊確定,但在瀏覽器仍然凍結之後。看起來像等待第二個Ajax成功?但是我不想在第一個Ajax完成後等待並凍結瀏覽器。 – Vilis 2014-09-23 17:27:21