jQuery ajax函数的问题

时间:2011-11-19 14:27:16

标签: javascript ajax jquery

我遇到了麻烦,因为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>"; }

但我收到的是未定义

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

2 个答案:

答案 0 :(得分:2)

你想要做的事情从根本上是不可能的。你的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是正确的;因为你正在同步拨打电话(你真的应该认真考虑不要这样做;这对你的用户体验来说非常糟糕)故事是不同的。但是,上面的方法仍然可以工作。

答案 1 :(得分:1)

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

return search_return["keywords"];

删除cookie行将在您的示例中返回,但您没有在我能看到的任何地方使用ajax调用的结果,所以我不确定是否有任何意义。