mad*_*ora 5 ajax coldfusion jquery json cfc
为了便于解释,我简化了这段代码.
我有一个cfm页面,用户点击表格行并获取ID.我想将该ID发送到CFC,在那里运行查询,并将结果返回到cfm页面.
这是JQuery的样子.
$.ajax({
url: "test.cfc?method=testFunction",
data: {ID:123456},
success: function(response) {
$("#div1").html(response);
}
});
Run Code Online (Sandbox Code Playgroud)
这就是cfc的样子.
<cfcomponent>
<cffunction name="testFunction" access="remote" returnType="query" returnFormat="JSON">
<cfquery name="testQuery" datasource="x">
Select ID, NAME
From Table
Where ID = '#url.ID#'
</cfquery>
<cfreturn testQuery>
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
编辑 - 替代CFC方法
<cffunction name="testFunction" access="remote">
<cfquery name="testQuery" datasource="x">
Select ID, NAME
From Table
Where ID = '#url.ID#'
</cfquery>
<cfset response = [] />
<cfoutput query="testQuery">
<cfset obj = {
"ID" = ID,
"NAME" = NAME
} />
<cfset arrayAppend(response, obj) />
</cfoutput>
<cfprocessingdirective suppresswhitespace="Yes">
<cfoutput>
#serializeJSON(response)#
</cfoutput>
</cfprocessingdirective>
<cfsetting enablecfoutputonly="No" showdebugoutput="No">
</cffunction>
Run Code Online (Sandbox Code Playgroud)
由于顶部显示的ajax调用中的成功函数,div1将填充JSON响应,如下所示.
{"COLUMNS":["ID","NAME"],"DATA":[[123456,"John"]]}
Run Code Online (Sandbox Code Playgroud)
编辑 - 替代响应
[{"ID":123456,"NAME":"John"}]
Run Code Online (Sandbox Code Playgroud)
接下来,我希望能够在页面的某个位置使用和输出JSON响应中的数据.我怎样才能做到这一点?我很难理解解析这些数据.我主要关注的是从数组格式中获取这些数据,以便将其输出到页面中的表单字段中.
我想出了最好的方法来做到这一点。
让 cfc 返回仅带有大括号的查询结果,而不是带有括号的数组。
<cfcomponent>
<cffunction name="testFunction" access="remote">
<cfquery name="testQuery" datasource="x">
Select ID, NAME
From Table
Where ID = '#url.ID#'
</cfquery>
<cfoutput query="testQuery">
<cfset obj = {
"ID" = ID,
"NAME" = NAME
} />
</cfoutput>
<cfprocessingdirective suppresswhitespace="Yes">
<cfoutput>
#serializeJSON(obj)#
</cfoutput>
</cfprocessingdirective>
<cfsetting enablecfoutputonly="No" showdebugoutput="No">
</cffunction>
Run Code Online (Sandbox Code Playgroud)
JQuery 看起来像这样
$.ajax ({
//location of the cfc
url: "test.cfc",
//function name and url variables to send
data: {method:'functioname', ID:ID},
//function run on success can the returned json object and split it out each field to a form field. Here I'm just showing one field in the alert.
success: function(obj) {
var parsedjson = $.parseJSON(obj);
alert(parsedjson.ID);
}
});
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
7505 次 |
| 最近记录: |