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

时间:2012-04-16 19:41:11

标签: jquery ajax coldfusion

我正在尝试使用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);

2 个答案:

答案 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流程中。