2014-01-29 134 views
0

我使用AJAX使用此腳本加載頁面的一部分:jQuery的Ajax調用調用

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('#btn_new').live('click',function(){ 
      var parameter = 1; 
      $.ajax({ 
       type: "POST", 
       url: "new_message.php", 
       data: { 
         parameter:parameter, 
       }, 
       success: function(msg) 
       { 
        $("#lib_container").ajaxComplete(function(event, request, settings) 
        { 
         $("#lib_container").html(msg); 
        }); 
       } 
      }); 
     }); 
    }); 
</script> 

裏面的lib_container DIV我有這個腳本的文本輸入:

<script type="text/javascript"> 
function searchUsers(str) { 
     $.ajax({ 
      type: "POST", 
      url: "users_ajax.php", 
      data: { 
        search:str 
      }, 
      success: function(msg) 
      { 
       //console.log(msg); 
       //$("#users_lst").html(msg.response); 
       $("#users_lst").ajaxComplete(function(event, request, settings) 
       { 
        $("#users_lst").html(msg); 
       }); 

      } 

     }); 
} 
</script> 

當我在輸入中加載一些文本時,第二個ajax腳本在div中加載了msg變量,然後重新加載了lib_container div。 我已經嘗試了很多方法來防止lib_container ajax觸發器,但它是徒勞的。只需將輸入放入新頁面即可正常工作。

誰能幫我解決這個問題?

謝謝。

+0

你爲什麼要在你的ajax請求已經完成時設置ajaxComplete回調?當成功函數運行即請求結束時,您已經擁有數據,不需要設置ajaxComplete。 –

+0

每次調用'.ajaxComplete()'時,您正在爲_all_ AJAX調用建立另一個處理程序。 – Barmar

+0

順便說一句,'.live()'在jQuery 1.7中被棄用,並在1.9中被刪除。除非你使用舊版本的jQuery,否則你應該用'.on'重新編碼它。 – Barmar

回答

0

您的問題似乎是,您每次從ajax調用獲得成功響應時都註冊一個新的ajaxComplete處理程序。由於它看起來像你想更新的HTML,我不知道爲什麼你需要這些ajaxComplete處理程序。

試試這樣說:

$(document).ready(function(){ 
    $('#btn_new').live('click',function(){ 
     var parameter = 1; 
     $.ajax({ 
      type: "POST", 
      url: "new_message.php", 
      data: { parameter:parameter }, 
      success: function(msg) { 
       $("#lib_container").html(msg); 
      } 
     }); 
    }); 
}); 

而且由於同樣的原因:

function searchUsers(str) { 
    $.ajax({ 
     type: "POST", 
     url: "users_ajax.php", 
     data: { search:str }, 
     success: function(msg) { 
      $("#users_lst").html(msg); 
     } 

    }); 
} 

在另一方面,.live已被廢棄,你真的應該使用AJAX的承諾,而不是success回調。有關詳情,請參閱the jQuery api

+0

謝謝,你一直很有幫助。我刪除了ajaxComplete,它工作正常 – Rodrigo