繁体   English   中英

jQuery ajax函数的问题

[英]Problems with jQuery ajax function

我遇到了麻烦,因为jQuery.ajax,在这种特殊情况下,似乎没有发生,所以函数总是返回NaN undefined结果:

    function requestUploadedSearch()
    {
        var cookie = JSON.parse(readCookie("user_search_cookie"));
        $.ajax({
            dataType: "script",
            async: false,
            data: {
                context: "search-get",
                code: removeNull(cookie, cookie !== null, "code")
            },
            success: function(data)
            {
                return search_return["keywords"];
            }
        });
        delete cookie;
    }

我也尝试写过类似的东西

success: function() { return "<nothing happens>"; }

但我得到的是未定义的

请回答,我真的很害怕。
提前致谢。

从根本上讲,您想要做的事情是不可能的。 你的ajax操作是异步的 (不,它不是durrr)。

相反,请重新构造您的API:

function requestUploadedSearch( callback )
{
    var cookie = JSON.parse(readCookie("user_search_cookie"));
    $.ajax({
        dataType: "script",
        async: false,
        data: {
            context: "search-get",
            code: removeNull(cookie, cookie !== null, "code")
        },
        success: function(data)
        {
            callback( search_return["keywords"] );
        }
    });
    delete cookie;
}

然后,当您调用它时,而不是期望返回值,而是传入一个函数来响应返回的数据:

requestUploadedSearch( function( value ) {
  // ... do stuff with "value" ...
});

编辑 - Doh! @nickd是正确的; 因为你正在同步拨打电话(你真的应该认真考虑不要这样做;这对你的用户体验来说非常糟糕)故事是不同的。 但是,上述方法仍然有效。

Pointy用更常见的做事方式指出(呃)你。 但是,由于设置了async: false ,就永远不会调用您的success:函数。

return search_return["keywords"];

在删除cookie行之后将按照您在示例中的方式返回,但是在我能看到的任何地方都没有使用ajax调用的结果,因此我不确定是否有任何意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM