我现在有点困惑,如果我把这个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>
有没有人有任何想法?
感谢。
答案 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()
语句。