从使用JQuery Ajax调用的Coldfusion CFC返回值
我试图用Ajax调用CFC组件。但是我需要将CFC返回的值传递给我的javascript例程。当我在警报中显示从使用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
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之类的方法来监视请求/响应?