2014-09-05 109 views
0

我正在尋找在基於ajax的div中搜索圖像的功能,該功能也在將數據加載到div容器中。jQuery ajax問題與搜索

我有以下代碼,它工作正常,如果我沒有執行任何搜索條件。如果我添加搜索,它會在jquery min.js文件中的所有瀏覽器中引發錯誤。我爲此使用版本1.11.1。不同的瀏覽器顯示不同的錯誤。

jQuery代碼:

$(document).ready(function() { 
    $("#finder").blur(executeFunction); 
    function executeFunction(page) { 
     page = typeof parseInt(page) == "number" ? page : 1; 
     $.ajax 
     ({ 
      type: "POST", 
      url: "find.php", 
      data: { 
       page: page, 
       search: encodeURIComponent($('#finder').val()) 
      }, 
      success: function(msg) 
      { 
       $(document).ajaxComplete(function(event, request, settings) 
       { 
        $("#container").html(msg); 
       }); 
      } 
     }); 
    } 
    executeFunction(1); 
}); 

HTML代碼:

<input type="finder" id="finder" /> 

沒有搜索所有的工作很好..

這是我在Firefox收到錯誤:

TypeError: 'initUIEvent' called on an object that does not implement interface UIEvent. 

...unction(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.l... 

Chrome錯誤:

Uncaught TypeError: Illegal invocation jquery-latest.min.js:4e jquery-latest.min.js:4Vc jquery-latest.min.js:4Vc jquery-latest.min.js:4Vc jquery-latest.min.js:4Vc jquery-latest.min.js:4Vc jquery-latest.min.js:4Vc jquery-latest.min.js:4m.param jquery-latest.min.js:4m.extend.ajax jquery-latest.min.js:4loadData (index):112m.event.dispatch jquery-latest.min.js:3r.handle 

歌劇錯誤:

Uncaught RangeError: Maximum call stack size exceeded 
我每次搜索時間

,錯誤計數器與相同的錯誤消息增加

IE 11的錯誤:

Argument not optional 

回答

1

我沒有嘗試重新創建這個問題只是一種預感。

typeof parseInt(page) == "number" 

上述說法總是如此。如果頁面是事件對象,那麼頁面的parseInt是NaN,它將爲上述語句返回true。

我認爲下面會更好

$("#finder").blur(function(e) { 
    executeFunction(1); 
}); 

其他的事情。

每次完成ajax請求時,您都會綁定一個跟隨ajaxCompleteEvent的實例。換句話說,結果會被多次寫入頁面。

 $(document).ajaxComplete(function(event, request, settings){ 
      $("#container").html(msg); 
     }); 

你爲什麼不乾脆用

$("#container").html(msg); 
在其位置

+0

對於所有「不好」的代碼部分+1。掛越來越多的'.ajaxComplete()'處理程序確實會造成各種麻煩。 – Regent 2014-09-05 06:23:32

+0

所以你們說我應該刪除ajaxcomplete代碼,好吧,它不會損害代碼,如果我刪除的權利。爲什麼這個代碼已經由jquery提供,然後 – jangun 2014-09-05 06:49:22

+0

成功:函數(msg)將允許您在完成此ajax請求時執行所有您想要的操作。當綁定到文檔的OTOH .ajaxComplete()將在頁面內的任何ajaxCall完成時觸發[不僅僅是這個]。它被添加到document.ready頁面的頁面上。 – Gnani 2014-09-05 07:12:55