$ Ajax - 获取coldfusion错误“ColdFusion无法将您指定的文本添加到输出流。”

问题描述:

由于此错误,我停在了几页上。我不知道为什么我的cfc方法将任何东西返回到输出流。这是返回错误消息的成功函数。数据库正在正确更新。

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>  

几件事情......

在你的Ajax调用,尽量指定,&returnFormat=json

此外,添加这个...

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

要哟你的CFC返回,那样响应头将返回Json。

+0

语法错误:杰森解析:意外的字符。 //空临时欺骗文件 \t \t \t \t \t为(VAR I = 0;我 user990016 2012-01-29 22:20:27

+0

在功能 – user990016 2012-01-29 22:23:13

+0

我真的不期待任何来自cffunction回来alrteady。 – user990016 2012-01-29 22:26:57

由于您不希望该方法返回任何内容,因此不要返回任何内容。

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); 
      } 
     }); 
    } 
} 

基于使用Railo(模仿CF9这里大部分)我的测试,你应该得到一个空的警报。

+0

是的,将数据类型设置为html,返回类型有很大的不同。谢谢。 – user990016 2012-01-31 02:05:17

+0

@ user990016。那你为什么不接受答案? – gdoron 2012-02-04 22:08:13