【问题标题】:call function with other ajax after first ajax success第一次ajax成功后用其他ajax调用函数
【发布时间】:2014-09-23 17:12:21
【问题描述】:

您好,我在 jquery 中有 ajax 调用

    $.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 的函数。

    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]) 并且在确认 OK 浏览器冻结之后。看起来它正在等待 sent_notification 函数中的 ajax 完成。但我不在乎第二个 ajax 的结果,它只是一些通知。正如我所说,它只是有时会发生,我认为这取决于第二个 ajax 执行时间。如何修改我的代码以在第一个 ajax 上获得成功,然后使用来自第一个 ajax 的数据执行另一个 ajax,而不会冻结任何浏览器。我认为只需将 async 设置为另一个 ajax 就可以了。谢谢

【问题讨论】:

  • 不要使用async:false
  • @Bergi 你认为这足以解决问题吗?在第一个 ajax 中确认警报后,我尝试并仍然冻结。几秒钟。
  • 不太可能,正如您所说,它是第二个冻结的 ajax(已经使用 async:true)。这应该是一个一般性的建议。

标签: javascript jquery ajax


【解决方案1】:

不要使用警报,因为它会阻塞正在执行的线程。使用 console.log("message here") 进行调试

【讨论】:

  • 您可能还想看看这个关于在不同浏览器中使用 console.log 的答案stackoverflow.com/questions/4539253/what-is-console-log
  • 谢谢,我知道 concole.log 但问题是我可以在此警报上单击“确定”,但在该浏览器仍然冻结之后。看起来像是在等待第二个 ajax 成功?但我不想在第一个 ajax 完成后等待并冻结浏览器。
猜你喜欢
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2012-07-27
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
相关资源
最近更新 更多