Jquery在没有函数时工作?

时间:2012-07-15 03:46:30

标签: jquery

我现在有点困惑,如果我把这个jquery放在我的网页上,一切正常。

<script>
    $.get("/Recipe/SearchResult/", function (response) {
        $("#SearchResults").html(response);
    }); 
</script>

但是,我试图在按钮上单击此按钮。所以我把它放在这样的函数中:

<script>    
    function Search() {
        $.get("/Recipe/SearchResult/", function (response) {
            $("#SearchResults").html(response);
        });
    };     
</script>

使用firebug,如果我在函数Search {} {中断,当我单击按钮时,它会在该行上中断。但是,如果我跳过,它似乎没有运行jquery。它只是在下一行的函数结束时没有任何反应。

编辑:这是包含按钮的行:

<button onclick="Search"  type="submit" class="btn btn-success"><i class="icon-search"></i> Search</button>

有没有人有任何想法?

感谢。

4 个答案:

答案 0 :(得分:3)

因为您的按钮类型是提交的,所以在点击按钮后,表单将回发并重新加载页面。尝试将其更改为type =“button”

<button onclick="Search"  type="button" class="btn btn-success"><i class="icon-search"></i> Search</button>

答案 1 :(得分:2)

试试这个:

$('.btn-success').click(function(e){
   e.preventDefault();
   $.get("/Recipe/SearchResult/", function(response) {
      $("#SearchResults").html(response);
   });   
})

答案 2 :(得分:2)

在调试器中,您必须在行$("#SearchResults").html(response);上放置一个断点。您不能直接单步执行它,因为稍后在ajax请求完成时调用回调函数。 ajax调用的异步性质意味着您不能只是按顺序逐步执行它。

即使回调函数看起来是顺序的,也不会按顺序执行。 Search()函数完成,然后调用回调。

答案 3 :(得分:2)

首先,您的内联onclick属性:

onclick="Search"

...没有调用Search函数。你必须加括号:

onclick="Search()"
  

“使用firebug,如果我在函数Search {} {中断,当我单击该按钮时,它会在该行上中断。但是,如果我跳过它,它似乎不会运行jquery它只是到了下一行的函数的末尾,没有任何反应。“

$.get()函数发出异步 Ajax请求,因此您提供的回调函数不应该立即运行,稍后在Ajax响应发生后jQuery将调用它。在此之前,Search()函数的其余部分将完成(尽管在您的情况下,函数中没有其他语句),无论Ajax响应返回的速度有多快。这个是正常的。尝试在该回调函数中添加一个断点,和/或在其中使用console.log()语句。