我正在尝试使用Ajax调用CFC组件。但是我需要将CFC返回的值传递给我的javascript例程。当我在警报中显示done
时,msg
函数会创建正确的消息。但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);
答案 0 :(得分:2)
以下代码应该为您完成,但是理解当您执行异步请求时,您只会在执行回调时获得结果。您的代码只会简单地调用$.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编程的文章。这将使您更好地理解异步编程是什么:http://en.wikipedia.org/wiki/Ajax_(programming)
编辑:更正拼写错误
答案 1 :(得分:0)
AJAX是异步的,你不能在没有进行同步调用的情况下从回调中返回一个值。你真的不想这样做。
为success:handler提供回调函数。您可以在那里添加逻辑,以便将返回的数据放入JavaScript流程中。