2014-09-05 130 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