Coldfusion和jQueryAjax
我的cfc正在工作,因为我可以调用它并获取数据的json字符串,但是,我的jquery ajax调用给我一个错误“SyntaxError:json.parse:unexpected end of data” ajax调用:Coldfusion和jQueryAjax,jquery,ajax,coldfusion,Jquery,Ajax,Coldfusion,我的cfc正在工作,因为我可以调用它并获取数据的json字符串,但是,我的jquery ajax调用给我一个错误“SyntaxError:json.parse:unexpected end of data” ajax调用: $.ajax({ type: "get", url: "/surveymanagement/admin/client.cfc", dataType: "json", data: { method: "GetClientsByNa
$.ajax({
type: "get",
url: "/surveymanagement/admin/client.cfc",
dataType: "json",
data: {
method: "GetClientsByName",
name: "im"
},
success: function(data){
$("#here").html(data);
},
error: function(a,b,c){
$("#here").html(a.responseText + c);
}
});
当我在另一个cfm页面中调用组件时,我的cfc返回字符串:[{“client\u id”:58,“client\u name”:“Aimbridge”},{“client\u id”:104,“client\u name”:“IMF”}
我的问题可能是什么
此外,如果我在浏览器中直接转到我的cfchttp://domain.com/filepath/client.cfc?method=GetClientsByName&name=im
我没有收到错误,但它只是一个白色屏幕。当我直接去看的时候,我不知道我应该看到什么
为了了解所有信息,此处是client.cfc:
<cfcomponent>
<cfsetting showdebugoutput="no">
<cffunction name="GetClientsByName"
access="remote"
returntype="string"
hint="get clients from search term">
<cfargument name="name" type="string" required="yes">
<cfset var util = createObject("component", "/surveymanagement/JSONUtil")>
<cfset var results = arrayNew(1)>
<cfset var elem = "">
<cfquery name="GetClientsByName" datasource="#application.dsn#">
SELECT client_id, client_name
FROM Clients
WHERE client_name LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#arguments.name#%">
</cfquery>
<cfloop query="GetClientsByName">
<cfset elem = structNew()>
<cfset elem["client_id"] = GetClientsByName.client_id>
<cfset elem["client_name"] = GetClientsByName.client_name>
<cfset arrayAppend(results, elem)>
</cfloop>
<cfcontent type="application/json" reset="true">
<cfreturn util.serializeJSON(results)>
</cffunction>
</cfcomponent>
我不确定这是否有帮助,但我正在处理angularjs的数据,并且正在研究:讨论如何使用CFC,而不是自己创建JSON(还演示了CFMX如何处理JSON调用) 在ColdFusion MX中,一种称为直接返回wddx的cfc。要停止此操作,请直接输出,而不是[使用]cfreturn和append cfabort ie:
<cfcontent reset="yes" /><cfoutput>#Trim(encode(qryExample))#</cfoutput><cfabort />
#修剪(编码(qryExample))#
我不知道答案,但是如果在从coldfusion页面调用该方法时得到了预期值,那么假设问题在于ajax调用。在类似chrome的开发工具中检查JSON结果。我遇到了一些问题,我只是返回了文本,并没有在其前面追加内容。此外,当我打开showdebugoutput,最后的调试信息破坏了我的json时,我还看到了其他问题。我将查看当通过浏览器(或ajax请求)运行cfc时服务器发送回的确切内容。CF的早期版本倾向于将很多东西包装成XML。如果您在浏览器中查看源代码,是否可以看到任何内容?虽然这不是很好,但您可以在CFC方法上设置output=true,不返回任何内容,并使用CFoutput将JSON输出回客户端顶部的客户端。CFC虽然这与barnyr的建议相矛盾,但您应该在cffunction上设置output=false(以后几乎总是这样做)@Jake-尝试添加链接中提到的CFC内容。对CF7不确定,这修复了CF9中的错误。即在返回/输出之前的最后添加
。(编辑:并合并steve的建议ie设置showdebugoutput=“no”
)@Leigh我已经把这两件事都包括进去了,但我仍然没有在firebug中得到回应,而且当我直接转到cfc@JakeZeitz-您应该在firebug中得到一些响应。即使这只是一个错误。除非可能涉及到干扰的应用程序文件?此外,请尝试使用lin中的确切语法k、 加上内容类型.ie#util.serializeJSON(结果)#
@JakeZeitz-这可能是您的两个RequestXX方法之一。从我所看到的,您实际上不需要OnRequest
。应用程序变量应该在applicationstart中设置。首先移动这些变量并注释OnRequest。(你还可以做一些其他的改进,比如去掉evaluate
。但一次只做一件事。)(编辑固定链接)你是说它有wddx包装器?你在使用吗?因为这对我很有用。
<cfcontent reset="yes" /><cfoutput>#Trim(encode(qryExample))#</cfoutput><cfabort />