【问题标题】:JavaScript return not behaving as expected [duplicate]JavaScript返回未按预期运行[重复]
【发布时间】:2018-03-29 20:24:33
【问题描述】:

我有一个基本的jQuery 函数:

$(document).on('click', '#myElement', function(){
    alert( getItemDescription('2') );
});

我的函数被调用,并按预期运行以下内容:

function getItemDescription(id){
        $.post("item_description.php", {id:id}, 
function () {
            // ...
        })
            .done(function (data) {
                    return data;
            })
            .fail(function () {
                return 'error';
            });
    }

当我查看控制台窗口中的网络选项卡时,.post() 正在成功地从 item_description.php 检索正确的信息——但是我的原始功能——alert 只是回复 undefined——我有查看了JS 中的退货手册,并阅读了 S.O. 上的大量帖子。 -- return 应该能够返回一个文字,不是吗?这个简单的脚本我没有看到什么?如何将检索到的变量 datagetItemDescription 获取到 alert 中?

【问题讨论】:

    标签: javascript return return-value


    【解决方案1】:

    你的第二个函数目前没有返回任何东西,你需要的是

    function getItemDescription(id){
            return $.post("item_description.php", {id:id}, 
    function () {
                // ...
            })
                .done(function (data) {
                        return data;
                })
                .fail(function () {
                    return 'error';
                });
        }
    

    【讨论】:

      【解决方案2】:

      你应该做的是在.done中调用。一个例子是:

      function getItemDescription(id,f){
              $.post("item_description.php", {id:id}, 
      function (data) {
                  // ...
              })
                  .done(function (data) {
                          f(data);
                  })
                  .fail(function () {
                      return 'error';
                  });
          }
      
      $(document).on('click', '#myElement', function(){
          getItemDescription('2',alert);
      });
      

      在这种情况下你也不应该使用 .done ,因为在之前的链式调用中已经检索到了数据。如果你想抓住所有,使用 .finally

      【讨论】:

        猜你喜欢
        • 2017-10-23
        • 1970-01-01
        • 1970-01-01
        • 2021-07-23
        • 1970-01-01
        • 2021-03-23
        • 2014-10-02
        • 2018-12-05
        • 2016-09-20
        相关资源
        最近更新 更多