2014-09-23 120 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