Coldfusion和jQueryAjax

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

我的cfc正在工作,因为我可以调用它并获取数据的json字符串,但是,我的jquery ajax调用给我一个错误“SyntaxError:json.parse:unexpected end of data”

ajax调用:

$.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”}

我的问题可能是什么

此外,如果我在浏览器中直接转到我的cfc
http://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 />