[英]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.