我在网页上有2个函数,函数A应该在页面生成(init)加载,然后每60秒加载一次,或者单击“Button1”并且Ajax Post成功。
这是我到目前为止所做的:
<script src="http://code.jquery.com/jquery-2.0.3.js"></script>
<script>
$(function A() {
$.ajax({
url: "url",
type: "post",
datatype: "html",
data: {var1: "123"}
},
complete: function() {
setTimeout(A, 60000);
}
});
});
$(document).ready(function() {
console.log( "ready!" );
$('#Button1').click(function() {
$.ajax({
url: "url",
type: "post",
datatype: "html",
data: {var2: "123"},
success: function(data){
console.log( "Function Successful!" );
A(); //CALL FUNCTION A - NOT WORKING
},
}); //End of AJAX
});
});
</script>
功能A单独运作完美。
当我点击Button1时,我在控制台中输入了“功能成功”消息,但是没有触发功能A.
如何在单击Button1并且Ajax成功时运行函数A?
答案 0 :(得分:0)
在相同范围内定义您的功能。目前,您已在另一个范围内定义了函数A
。
$(document).ready(function() {
function A() {
$.ajax({
url: "url",
type: "post",
datatype: "html",
data: {var1: "123"},
// remove this},
complete: function() {
setTimeout(A, 60000);
}
});
}
$('#Button1').click(function() {
$.ajax({
url: "url",
type: "post",
datatype: "html",
data: {var2: "123"},
success: function(data){
console.log( "Function Successful!" );
A(); //CALL FUNCTION A
},
}); //End of AJAX
})
});
答案 1 :(得分:0)
要让函数在启动时运行一次,然后再使用它,您可以创建一个匿名函数,它会像这样返回:
var A = (function A() {
// do the functions stuff
return A;
})();
如果您想再次运行它,可以使用A()
:
$(document).ready(function() {
var A = (function A() {
// stuff here
return A;
})();
$('#Button1').click(function() {
$.ajax({
url: "url",
success: function(data){
A(); //CALL FUNCTION A
}
});
})
});