我需要在页面加载时开始轮询URL,以从信用卡服务器获取JMS响应。我把以下内容放在一起。
它可以工作,但只有我点击浏览器上的“刷新”按钮。我希望在首次显示页面时自动加载URL中的数据,而不需要用户刷新。
我在这里缺少一个基本概念,并希望了解如何使其发挥作用。到目前为止,我有大约2天的JavaScript经验。
<html>
<body>
<div id="p_results"></div>
<script type="text/javascript">
$(document).ready(function() {
function doJMSPolling() {
$.ajax({
url: "./poll",
type: "GET",
dataType: "text",
success: function(json) {
var json = $.parseJSON(json);
if (json.status === 'continue-polling' && json.msg === 'ok') {
setTimeout(function() {
doPolling();
}, 2000);
}
else if (json.status === 'stop-polling' && json.msg === 'success') {
for (key in json) {
if (key === "providerResponse") {
res = json[key];
for (reskey in res) {
$("#p_results").append(reskey + ":" + res[reskey] + "<br>");
}
}
}
} else if (json.status === 'stop-polling') {
$("#p_results").text(json.status);
}
}
});
}
});
</script>
</body>
</html>
答案 0 :(得分:4)
您不必将实际功能定义放在document.ready
回调中。该函数可以位于<script>
标记内的任何位置。完成后,您需要做的就是在document.ready
回调中调用该函数 -
<script type="text/javascript">
$(function(){
doJMSPolling();
});
function doJMSPolling(){
...
}
</script>
注意:
$(function(){})
是$(document).ready(function(){})
答案 1 :(得分:3)
在我看来,你宣布你的功能,但不是在呼唤它。为了执行函数的代码,你需要在document.ready中的函数声明之后添加它:
doJMSPolling();
答案 2 :(得分:3)
不要将您的功能置于 document.ready
内,只需将其称为。试试这个:
$(document).ready(function() {
doJMSPolling();
});
function doJMSPolling() {
$.ajax({
url: "./poll",
type: "GET",
dataType: "text",
success: function(json) {
var json = $.parseJSON(json);
if (json.status === 'continue-polling' && json.msg === 'ok') {
setTimeout(function() {
doPolling();
}, 2000);
}
else if (json.status === 'stop-polling' && json.msg === 'success') {
for (key in json) {
if (key === "providerResponse") {
res = json[key];
for (reskey in res) {
$("#p_results").append(reskey + ":" + res[reskey] + "<br>");
}
}
}
}
else if (json.status === 'stop-polling') {
$("#p_results").text(json.status);
}
}
});
}