微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过JQuery传递和返回ColdFusion结构

我有一个ColdFusion会话变量,它是一个数据结构.我的目标是执行一个jQuery调用,通过Ajax执行以下两种操作之一:

>将ColdFusion结构发送到ColdFusion组件方法,使用新创建的字符串更新该结构的元素,然后返回相同的结构.

要么

>执行ColdFusion组件方法,该方法创建新字符串,返回该字符串,并在Ajax调用后将该新字符串分配给同一ColdFusion会话结构的元素.

我认为这很容易,但我遇到了一些问题.有人知道我需要做什么吗?

解决方法

好吧,CF会话结构和jQuery在两个不同的领域运行 – 服务器上的CF和浏览器中的jQuery.为了“从Ajax中将该ColdFusion结构发送到[cfc] …”,您必须将会话结构序列化为json字符串,然后以某种方式将该json字符串传输到客户端.最有可能的是,您需要将此作为向客户端呈现页面的一部分:
<cfoutput>var jsonStruct = #SerializeJSON(session.myStruct)#;</cfoutput>

然后,您可以根据需要使用jQuery代码中的jsonStruct变量(作为真正的JS对象).当您需要将其发送回CF时,您可以在Javascript端再次序列化它,如下所示:

$.ajax({
   url: "foo.cfc?method=myMethod",dataType: "json",data: {myStruct: JSON.stringify(jsonStruct)},success: function (respJSON) {
      jsonStruct = respJSON;
   }
});

请注意,您应该包含json2.js以进行序列化,因为某些浏览器本身不支持JSON.stringify().

更新

我已经更新了示例jquery代码,以显示如何更新javascript对象以使用来自CFC的响应.要正常工作,你的CF需要看起来像这样:

<cffunction name="myMethod" access="remote" returnFormat="json">
  <cfargument name="myStruct" type="string">

  <cfset var realStruct = DeserializeJSON(arguments.myStruct)>

  <cfset session.myStruct = realStruct><!--- or whatever you want to do with it at this point --->

  <cfreturn session.myStruct>
</cffunction>

原文地址:https://www.jb51.cc/jquery/241410.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐