Javascript jqueryajax函数的问题

Javascript jqueryajax函数的问题,javascript,ajax,jquery,Javascript,Ajax,Jquery,我遇到了一个问题,因为jQuery.ajax在这种情况下似乎没有发生,因此函数总是返回NaNundefined,结果是: function requestUploadedSearch() { var cookie = JSON.parse(readCookie("user_search_cookie")); $.ajax({ dataType: "script", async: false,

我遇到了一个问题,因为jQuery.ajax在这种情况下似乎没有发生,因此函数总是返回NaNundefined,结果是:

    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>"; }
success:function(){return”“;}
但我得到的是未定义的

请回答,我真的被吓坏了。

提前谢谢。

你想做的根本不可能。您的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搜索_return[“关键字”]


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

您能否更详细地解释一下您试图执行的操作?在本地“cookie”变量上使用“delete”并不是真的必要。好的。谢谢你,尖头。我不熟悉jQuery,也不太熟悉Javascript,所以我没有使用它。我忘了它有“垃圾收集”功能。是的。我可以,Ashok Padmanabhan。我试图做的是一个搜索页面,它从服务器发送和接收数据。这里的要点是要知道当搜索页面出现时,用户键入了什么,或者用户向服务器发送了其他搜索关键字。它的工作原理有点像这样:在每个页面中,都有一个由fieldset>table>tbody>tr>td content editable,td按钮顺序组成的搜索“框”,点击按钮td会将用户重定向到搜索页面,并使服务器生成代码。很抱歉,我没有立即回答,但我真的很忙。OP有
async:false
,所以电话阻塞了,不是吗?嗯。。。但这是一个要点。我的函数同步发出请求。所以,我认为它应该称为成功方法。@nickd-oops,我也看到了!我的大脑刚刚翻转过来。我责怪缺少咖啡:-)谢谢,我会更新答案。对不起,用户1055350你是对的,但这也是nickd的评论的意思:-)但是如何?“搜索返回”是ajax操作的结果。它被声明为var search_return={“keywords”:“something”,“code”:“}代码类似于服务器对搜索关键字的“地址”,因此管理员很容易管理它们。它保存为服务器中的字符串对(用delphi编写),由=。