jquery getJSON 对 cfc 的调用可以在测试服务器上运行,但不能实时运行

标签 jquery ajax coldfusion cfc

我有一个页面使用 getJSON 来访问同一域内的 cfc。在开发服务器上一切正常,但在现场却不行。其他 jquery 执行得很好,只是 .getJSON 调用不行。我也尝试过网络上的几个示例,并使用 ajax 而不是 getJSON,但结果总是相同的 - 在测试中很好,但在实时中则不然。

这是我当前用于测试的代码,它是 http://www.christopherchin.com/blog/index.cfm/2010/3/25/HELP-CFCjqueryJSON 中示例的精简版本.

<小时/>

索引.cfm:

<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
chkUsernameUnique = function(theUsername){
    $.getJSON("/jsonTest/mycfc.cfc", {
    method: 'chkUsername',
    Username: theUsername,
    returnformat: 'json'
    }, function(isUsernameUnique){
        $("#theErrorDivID").html(isUsernameUnique);
    });
};
</script>

<input type="text" name="username" id="username" onchange="chkUsernameUnique(this.value);" />

<div id="theErrorDivID"></div>
<小时/>

mycfc.cfc:

<cfcomponent>
<cffunction name="chkUsername" access="remote" returnformat="json" output="false">
    <cfargument name="Username" required="true">

    <cfset thisRecordCount=4>

    <cfreturn thisRecordCount>
</cffunction>
</cfcomponent>
<小时/>

忽略它没有做任何有用的事情,这纯粹是为了测试。在测试服务器上,它会执行应有的操作,并且如果我在框中键入内容,则会显示 4。在肝脏服务器上,它实际上并没有抛出错误,浏览器显示 javascript 正在验证,但什么也没有发生。此时,我认为这可能是服务器上或 ColdFusion 管理中的设置,而不是与代码有关的任何设置,但我什至不知道从哪里开始。任何帮助将非常非常感谢。

<小时/>

更新:我现在在 firebug 中看到,在测试服务器上响应是 4.0,但在实时服务器上它是//4.0。额外的斜杠是什么意思?

最佳答案

您很可能在实时服务器上启用了 ColdFusion 的“secureJson”功能。默认情况下,它的作用是通过在 JSON 前面放置两个正斜杠来保护 JSON 输出。其他尝试访问 JSON 的源将仅看到 Javascript 注释 (//),而 ColdFusion 知道该功能已启用,将删除斜杠,然后使用它。

您可以在 Application.cfc (this.secureJson = false)、Application.cfm ( <cfapplication ... secureJson="false" /> ) 或 cffunction 标记 ( <cffunction ... secureJson="false"> ) 中的函数级别将其关闭。 CF 管理员中还有一个服务器范围的设置。您很可能在测试环境中关闭了此功能,但在生产环境中将其打开。

关于jquery getJSON 对 cfc 的调用可以在测试服务器上运行,但不能实时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6515690/

相关文章:

javascript - Ajax 发布 FormData 和表单

Jquery ajax 帖子不适用于 iPhone 和 Android

c# - Web 服务需要 JSON,发送多部分格式的数据

javascript - div 中显示上一页,并显示最后一页数据表

javascript - javascript中下周末的日期时间返回无效日期

javascript - 通过 POST 或 cookie 发送 token ?

jQuery getJSON 可排序回调

asp.net - Web 服务需要一个 DataSet 对象,我如何通过 ColdFusion 或原始 XML 提供该对象?

performance - ColdFusion:效率更高的structKeyExists()而不是isDefined()

javascript - jquery ajax 从容器内的按钮加载内容