我编写了这段代码。基本上它每2秒检查一次数据库以查看是否有更改。如果没有发生变化,则一个变量(CheckMessageCount)返回值为0并且什么都不会发生。如果进行更改并且CheckMessageCount传回的值为1,则div会在屏幕上重新加载消息。转换要在Ajax语句中读取的coldfusion变量
我不确定是如何将cfm页面中的CheckMessageCount传递回jquery/ajax,以便if/else语句可以正常完成。现在它只是一直到别的地方,什么都不做。
我读了如何做一个查询字符串,但我不能让它工作。我也尝试做this thread做了什么,但没有运气。
下面是我用Jquery的/ AJAX
<html>
<head>
<title>Test</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
$.get("homepageresponse2.cfm", function (data) //gets the code behind the page
{
$("#responsecontainer").html(data); //places the data in the budget div
});
var CheckMessageCount = 0;
(function() {
var reloadthediv = function() {
$.ajax({
url: "CheckMessageCount.cfc?method=ReloadMessageCount",
type: "get",
datatype: "json"
})
.done(function(CheckMessageCount) {
//if checkmessagecount comes back 1, then reload
if (CheckMessageCount == 1) {
$("#responsecontainer").load("homepageresponse2.cfm");
//if checkmessagecount comes back 0, do nothing
} else {
//do nothing
console.log('nothing done')
}
});
};
reloadthediv();
setInterval(function() {
reloadthediv();
}, 2000);
})();
</script>
</head>
<body>
<div id="responsecontainer" class="responsecontainercss"></div>
</body>
</html>
这里的页面是我对CheckMessageCount.cfc
<cfcomponent displayname="Checks The Message RecordCount to reload" hint="This is the CFC for Checks The Message RecordCount to reload">
<!--- This function gets all user status data for the proper session.id if it exists --->
<cffunction name="ReloadMessageCount" returntype="any" returnformat="json" hint="Gets message count">
<cfquery name="CheckMessages" datasource="hippogriff" debug="No">
SELECT COUNT(HomePageMessage_ID) AS TheMessageCount
FROM HomePageMessage
</cfquery>
<!--- code here for the messagecount --->
<!--- once it does, let's do this --->
<cfif CheckMessages.TheMessageCount GT messagecount>
<cfset CheckMessageCount=1>
<cfset messagecount=#CheckMessages.TheMessageCount#>
<cfelse>
<cfset CheckMessageCount=0>
</cfif>
<cfreturn CheckMessageCount>
</cffunction>
</cfcomponent>
这大约是因为就我所知去。我尝试了ColdFusion serializeJSON,并没有得到任何东西。我知道现在有websockets,但是我们的托管公司“不支持他们在服务器上”,而且它真的超出了我的覆盖范围。我很惊讶,我对此做了这么多。任何帮助,将不胜感激。
只有原因我知道它半工作,因为我把reload语句放在JS的else部分,它重新加载div。
我也建议使用这种方法的cfc,你不是在任何地方输出数值 - 你只是简单地设置它。这就是为什么没有东西被发回jQuery。 –
另外,CFIF中'messagecount'变量的来源和用途是什么?如果它应该是传递给脚本的某种参数,它必须包含在ajax调用中。 – Leigh
丹,我更新了代码以包含cfc并更新了JS,因为我认为我有一些不需要的东西。 Leigh,消息计数在cfc中设置,我没有包含代码,因为它工作并使if语句有效。 任何想法为什么javascript无法识别cfc传回0或1? – Adam