从使用JQuery Ajax调用的Coldfusion CFC返回值

从使用JQuery Ajax调用的Coldfusion CFC返回值,jquery,ajax,coldfusion,Jquery,Ajax,Coldfusion,我试图用Ajax调用CFC组件。但是我需要将CFC返回的值传递给我的javascript例程。当我在警报中显示msg时,done功能会创建正确的消息。但是ret变量从不填充该值。我需要返回值来改变javascript数据流 我做错了什么 var ret = $.ajax({ type: "post", url: "cfc/CFCSemae.cfc", data: { metho

我试图用Ajax调用CFC组件。但是我需要将CFC返回的值传递给我的javascript例程。当我在警报中显示
msg
时,
done
功能会创建正确的消息。但是
ret
变量从不填充该值。我需要返回值来改变javascript数据流

我做错了什么

var ret = $.ajax({
              type: "post",
              url: "cfc/CFCSemae.cfc",
              data: {
                  method: "verificaCadastro",
                  returnformat: "plain",
                  queryformat: "column",
                  nro_cadastro: num_cad
      },
      dataType: "html",
      }).done(function(msg){ return msg; });

alert(ret);

AJAX是异步的,如果不进行同步调用,就无法从回调返回值。你真的不想那样做


为success:handler提供回调函数。您可以在那里添加逻辑,将返回的数据放入JavaScript流。

下面的代码应该可以为您完成这项工作,但是要理解,当您执行异步请求时,只有在执行回调时才会得到结果。您的代码只需调用
$.ajax
函数,但它不会等待响应(就像它在不同的线程中一样)。当响应准备就绪时,执行回调
complete
。如果响应返回成功消息(HTTP状态200),则调用
success
回调,否则调用
error

//somewhere in your script
var ret = '';

// then at the ajax request
$.ajax({
    type: "post",
    url: "cfc/CFCSemae.cfc",
    data: { method: "verificaCadastro", returnformat: "plain",
            queryformat: "column", nro_cadastro: num_cad },
    dataType: "json",
    contentType: "application/json; charset=utf-8", // make sure your serverside function can return json
    success: function(data) {
        //your own validation to check whether 'data' is a valid response 
        ret = data;
    },
    error: function(xhr, msg) {
        // handle error
    }
});
请阅读以下关于ajax编程的文章。这将使您更好地理解什么是异步编程:)


编辑:更正拼写错误

回调函数不是这样工作的。而不是
返回消息
中执行此操作。完成
函数:
ret=msg
我也会使用
success
error
回调,而不是
done
complete
我已经尝试过了,但现在我只得到ret=undefined。。。如果我在done函数中发出警报(msg),我会得到值。。。如果我在ajax调用内部执行ret=msg,在外部执行alert(ret),我会得到未定义的X_xI不认为您理解异步编程是的,您是否尝试过Firebug之类的方法来监视请求/响应?