这可能是我的误解,但我希望有人解释我想念的地方。
如果我有使用Jquery发出POST请求的以下实现,则在我执行“click”事件之前不会发出请求。
$(document).ready(function(){
$("button").click(function(){
$.post("demo_test_post.asp",
{
name:"Donald Duck",
city:"Duckburg"
},
function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});
});
});
但是,如果我通过单独定义匿名函数来为其命名,那么即使在加载页面时也会尝试发送帖子请求。
<script>
$(document).ready(function(){
$("button").click(callFunction());
});
var callFunction = function(){
$.post("demo_test_post.asp",
{
name:"Donald Duck",
city:"Duckburg"
},
function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});
};
</script>
有人可以解释一下我的理解中缺乏的东西。对我来说,两者应该以同样的方式工作
感谢您阅读
答案 0 :(得分:3)
这可能是因为你应该引用该函数,而不是调用它
$(document).ready(function(){
$("button").click(callFunction); // no parenthesis
});
添加括号会立即调用该函数并返回结果,您只想引用它
答案 1 :(得分:0)
请尝试使用此格式,不要忘记将id="btn"
添加到按钮
$('#btn').click(function(event){
var formData = {
name:"Donald Duck",
city:"Duckburg"
}
$.ajax({
type : 'POST' ,
url : 'someurl',
data : JSON.stringify(formData),
contentTYpe : 'application/json',
error : function(data,status,error){
console.log(data+': '+status+': '+ error);
},
success : function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});
}).done(function(apiResponse){
//Do something when done
});
});