代码之家  ›  专栏  ›  技术社区  ›  Silver Light

函数内部的jquery-ajax请求:如何返回得到的值?

  •  0
  • Silver Light  · 技术社区  · 14 年前

    我想编写一个javascript函数,它将向PHP脚本发出一个Ajax请求,并返回结果。这就是它的样子:

    function myjsfunc(some_data)
    {
        $.post(
                "/myscript.php",
                { some_data: some_data },
                function(response)
                {
                    result = response;
                }
              );
        return result;
    }
    

    问题是, result 总是未定义。这可能是因为变量 结果 不在 myjsfunc 命名空间?或者是因为成功函数的结果是在主函数被处理之后被接收的?

    不管怎样,我怎样才能得到想要的结果呢?有办法吗?

    1 回复  |  直到 14 年前
        1
  •  5
  •   g.d.d.c    14 年前

    您不能返回结果,因为它不是由外部函数完成时定义的。您的Ajax调用是异步进行的,在发布之后调用回调函数。要处理结果,您需要这样做:

    function myjsfunc(some_data) {
        $.post("/myscript.php", { some_data: some_data }, function(response) {
                if (some_data.prop) {
                    myReturnHandler(response);
                } else {
                    myOtherHandler(response);
                }
            }
        );
    }
    

    在这里,您将单独定义myreturnhandler,它需要知道如何使用结果数据接管处理。

    ——编辑——

    您还可以执行测试来确定如何处理您的响应。添加了额外的代码来演示。