gpt4 book ai didi

javascript - ColdFusion - 如何访问 jQuery 中的 CFC 返回变量?

转载 作者:行者123 更新时间:2023-11-30 13:30:12 24 4
gpt4 key购买 nike

我正在使用 ColdFusion 9 和 jQuery。我正在使用 CFAJAXPROXY。

我在访问返回到 jQuery 对象的数据时遇到问题。

这是我的 jQuery 代码的一部分:

var jro = new jsApp();
NewUser = jro.addUser(NewEmail);

CFC中的方法是addUser。我传入了一个电子邮件地址 (NewEmail),然后我得到了新用户的用户 ID。

CFC 中的这个查询工作得很好:

<cfquery name="GetUserID">
SELECT MAX(UserID) as MaxID
FROM Users
</cfquery>

当我像这样硬编码一个值时,我没有遇到问题:

<cfset NewUser = 10>
<cfreturn NewUser>

当我尝试使用这样的动态变量时,出现 JSON 错误:

<cfset NewUser = GetUserID.MaxID>
<cfreturn NewUser>

这个错误似乎发生在 CFC 中。对返回变量进行硬编码是可行的,但从查询中返回单个整数是行不通的。

如何从查询中返回单个整数?为什么这会造成问题?

这里是 CFC 的调用方式。

$("#AddUserSave").click(function() {
NewEmail = $("#NewEmail").attr("value");
var jro = new jsApp();
UserID = jro.addUser(NewEmail);
$("#UserDiv").load("GlobalAdmin/EditUser.cfm?UserID="+UserID);
});

同样,CFC 拒绝从数据库返回 UserID,但很乐意返回一个硬编码的数字。

好的,在我的 CFC 中这有效:

<cfset NewUser = GetUserID.UserID>
<cfset NewUser = 1>
<cfreturn NewUser>

但这不起作用:

<cfset NewUser = GetUserID.UserID>
<cfreturn NewUser>

Firebug 说:

parseJSON throw new SyntaxError("parseJSON"); 
cfajax.js (line 803)

好的,当我通过浏览器访问这个方法时,它显示返回一个整数。

 <!--- GET MAX USER --->
<cffunction name="getMaxUser" access="remote" returnformat="plain" returntype="any">
<cfquery name="GetUserID">
SELECT MAX(UserID) AS MaxID
FROM Users
</cfquery>
<cfreturn createObject( 'java', 'java.lang.Integer' ).init( javaCast( 'int', GetUserID.MaxID ) ) />
</cffunction>

当我查看页面源码时,maxid为1(一个/整数)。

在 JavaScript 中调用 CFC:

    var jro = new jsApp();
jro.getMaxUser();

我得到的确切错误可以在这个屏幕截图上查看:

http://evikjames.com/IMAGEs/parsejson.png

这是我的氟氯化碳的图片。

http://evikjames.com/images/CFC.png

这是由 JavaScript 创建的用于访问该方法的 URL 的图像:

http://www.evikjames.com/images/error-2.png

+++++++++++++++++++++++++++++++++++++++++++++++++++++++回答

JavaScript 需要创建一个将返回格式设置为纯文本的请求。我猜它的默认返回类型是 JSON。 CFC 阻塞在它自己创建的 JSON 上。

var jro = new jsApp();
jro.setReturnFormat('plain');
UserID = jro.getMaxUser();

感谢 Charlie 看穿了这一点。我永远感激不已。

最佳答案

根据我们的谈话,您需要可远程访问的方法来返回整数,而不是 float 。

归功于http://www.threesources.com/archives/009007.html ,您需要执行以下操作:

1) 指定 returnFormat = "plain"(我相信你已经完成了)

2) <cfreturn createObject( 'java', 'java.lang.Integer' ).init( javaCast( 'int', GetUserID.MaxID ) ) />

根据上面链接的站点,原因是“ColdFusion 的数字类型映射到自动生成的 RPC WSDL 中的 double ”。

该站点列出了需要执行的 5 个步骤,但我仅通过执行上面列出的 2 个步骤就能够成功返回一个整数。

关于javascript - ColdFusion - 如何访问 jQuery 中的 CFC 返回变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7058758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com