我遇到了麻烦,因为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>"; }
但我收到的是未定义。
请回答,我真的很害怕 提前谢谢。
答案 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调用的结果,所以我不确定是否有任何意义。