jQuery ajax问题与搜索

时间:2014-09-05 05:42:18

标签: javascript jquery ajax

我正在研究基于ajax的div搜索图像的功能,该功能还将数据加载到div容器中。

我有以下代码,如果我没有执行任何搜索条件,它可以正常工作。如果我添加搜索,它会在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 code:

<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 

Opera Error:

Uncaught RangeError: Maximum call stack size exceeded

每次搜索时,错误计数器都会增加,并显示相同的错误消息

IE 11错误:

Argument not optional

1 个答案:

答案 0 :(得分:1)

我没有尝试重新预测这个问题。

typeof parseInt(page) == "number"

以上陈述始终属实。如果page是event-object,则page的parseInt为NaN,对于上述语句,它将返回true。

我认为以下会更好

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

其他事情。

每次ajax请求完成时,您都绑定了一个跟随ajaxCompleteEvent的实例。换句话说,结果被多次写入页面。

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

为什么不简单地使用

$("#container").html(msg);

代替它?