$Ajax - getting coldfusion error “ ColdFusion was unable to add the text you specified to the output stream.”

Deadly 提交于 2019-12-11 13:43:29

问题


I'm stopped on a couple of pages because of this error. I'm not sure why my cfc method is returning anything to the output stream. It's the success function that is returning the error message. The database is being updated correctly.

function onSelectChange(){
        var selected = $("#MrMrsSelect option:selected");
        if(selected.val() != 0){
            //alert("You Selected " + selected.text() + "for " + SelectedInvid);
             $.ajax({
                 type: "POST",
                 url: "cfc/basic.cfc?method=FixMrMrs",
                 data: "indivNum=" + SelectedInvid + "&MrMrs=" + selected.text(),
                 error: function (xhr, textStatus, errorThrown){
                     // show error
                     alert(errorThrown);
                     },
                 success: function(data ) {
            alert(data);
     },

CFC:

        <cffunction name="FixMrMrs" output="false" access="remote">
        <cfargument name="IndivNum" required="True" type="string" default="">
        <cfargument name="MrMrs" required="True" type="string" default="">
        <cfset var qResults = "">
        <cfquery name="qResults" datasource="#request.dsn#">
            UPDATE users_info
            SET  Mr_Mrs_Ms_Miss = '#arguments.MrMrs#'
            WHERE ID = <cfqueryparam value="#arguments.IndivNum#" />
        </cfquery>
        <cfreturn true>
        </cffunction>    

回答1:


Since you don't expect the method to return anything, don't return anything.

base.cfc:

<cffunction name="FixMrMrs" returntype="void" output="false" access="remote" returnformat="plain">
    <cfargument name="IndivNum" required="True" type="string" default="">
    <cfargument name="MrMrs" required="True" type="string" default="">
    <cfset var qResults = "">
    <cfquery name="qResults" datasource="#request.dsn#">
        UPDATE users_info
        SET  Mr_Mrs_Ms_Miss = '#arguments.MrMrs#'
        WHERE ID = <cfqueryparam value="#arguments.IndivNum#" />
    </cfquery>
    <cfreturn />
</cffunction>

javascript:

function onSelectChange(){
    var selected = $("#MrMrsSelect option:selected");
    if(selected.val() != 0){
        //alert("You Selected " + selected.text() + "for " + SelectedInvid);
        $.ajax({
            type: "POST",
            url: "cfc/basic.cfc?method=FixMrMrs",
            data: "indivNum=" + SelectedInvid + "&MrMrs=" + selected.text(),
            error: function (xhr, textStatus, errorThrown){
                // show error
                alert(errorThrown);
            },
            success: function(data ) {
                alert(data);
            }
        });
    }
}

Based on my testing using Railo (which mimics CF9 for the most part here), you should get an empty alert.




回答2:


A couple of things...

In your Ajax call, try and specify, &returnFormat=json

Also, add this...

<cfset var qResults = "">
<cfcontent type="application/json" />

To your CFC return, that way the response headers will return Json.



来源:https://stackoverflow.com/questions/9048946/ajax-getting-coldfusion-error-coldfusion-was-unable-to-add-the-text-you-spe

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!