Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript返回的行为不符合预期_Javascript_Return_Return Value - Fatal编程技术网

JavaScript返回的行为不符合预期

JavaScript返回的行为不符合预期,javascript,return,return-value,Javascript,Return,Return Value,我有一个基本的jQuery功能: $(document).on('click', '#myElement', function(){ alert( getItemDescription('2') ); }); 调用My函数,并按预期运行以下操作: function getItemDescription(id){ $.post("item_description.php", {id:id}, function () { // ...

我有一个基本的
jQuery
功能:

$(document).on('click', '#myElement', function(){
    alert( getItemDescription('2') );
});
调用My函数,并按预期运行以下操作:

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

当我在console窗口中查看network选项卡时,
.post()
成功地从
item\u description.php
中检索到正确的信息。然而,我的原始功能--
警报
只是回复
未定义的
--我已经阅读了
JS
中的退货手册,并阅读了许多关于S.O.的帖子--
退货
应该能够返回文字不是吗?这个简单的脚本我没有看到什么?如何将从
getItemDescription
检索到的变量
数据
放入
警报

您的第二个函数目前不返回任何内容,您需要的是

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

你要做的是打电话进去,好了。一个例子是:

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,因为数据已经在上一个链式调用中检索到。如果你想抓住一切,就用。最后