【问题标题】:How to capture a return value with jquery [duplicate]如何使用jquery捕获返回值[重复]
【发布时间】:2014-06-18 05:48:43
【问题描述】:

我正在尝试编写一个 Javascript/jQuery 函数,该函数从服务器加载另一个页面,对其进行解析(以确定其 父 页面),然后返回该值。

我的函数目前看起来是这样的:

function getParent(pageNo) {
    $.get( [page_reference] , function(loaded_stuff) {

    [process to parse loaded_stuff to determine return_value]

    alert (return_value);  // displays the value I want
    });
}

但我不知道如何捕获返回值。

如果我在alert() 之后直接放置return 语句,我将返回到某个JQuery 函数,而不是我从中调用的函数。我的函数接收到undefined。

如果我将return 语句直接放在最后的大括号 之前,那么Javascript 将在完成异步AJAX 位之前执行它。我的函数接收到return_value的初始值。

我确信必须有一个简单的答案,但我一直找不到。我不知道如何使函数按顺序执行。你能帮帮我吗?

【问题讨论】:

  • 异步调用意味着它请求它并进入下一行,不等待它完成,因此将return语句放在最后一个花括号(函数结束)之前将不起作用

标签: javascript jquery ajax


【解决方案1】:

由于 ajax 是异步的,它不会工作,你必须通过回调中的工作来解决它。

<script>
    function getParent(pageNo) {
        $.get( [page_reference] , function(loaded_stuff) {

        [process to parse loaded_stuff to determine return_value]

        alert (return_value);  // displays the value I want
        ActuallyDoTheWork(return_value);
        });
    }

    function ActuallyDoTheWork(return_value)
    {
        //do the updating work here
    }
</script>

【讨论】:

  • 谢谢。我认为这已经澄清了我在其他地方阅读的内容。
【解决方案2】:

val returnedValue=return_value;

然后你就可以随心所欲了!

更新:

function getParent(pageNo) {
    $.get( [page_reference] , function(loaded_stuff) {

    [process to parse loaded_stuff to determine return_value]

    alert (return_value);  // if return_value returns the desired value then you should just return that like this
    return return_value;
    //or store it in a variable and then use it as you like
    val returnedValue=return_value;  
    //note that if you choose to store it in a variable then you must remove the "return return_value;" line
    });
}

【讨论】:

  • 这是你想要的吗?
  • 抱歉,我需要更多详细信息 - 我应该把它放在哪里,它有什么作用? 'returnedValue' 是一个新变量,还是某个东西的预定义属性?
  • 好的,看看我的更新
  • 我认为这不是答案。我试过直接从函数中“返回”,但它不起作用。设置另一个变量是可以的,但它会扭曲其余的代码(因为我不能只将函数作为值调用)。
  • 你的意思是 return_value 是一个函数?如果是这样,您可以使用 returnedValue()
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
相关资源
最近更新 更多