2

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

2 回答 2

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 )

编辑:更正拼写错误

于 2012-04-16T20:03:15.893 回答
0

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

为成功提供回调函数:handler。您可以在此处添加逻辑,以将返回的数据放入您的 JavaScript 流中。

于 2012-04-16T19:48:36.133 回答