(1.你认为有一个全局jquery ajax'帮助'可以调用ajax(url,data,async)吗?)
function ajax(ajax_url, ajax_data, ajax_async){
ajax_async = typeof(ajax_async) != 'undefined' ? ajax_async : true;
$.ajax({
type: 'GET',
url: ajax_url,
data: ajax_data,
async: ajax_async,
dataType: 'text',
success: function(response) {
return response;
},
error: function(){
}
});
}
如果我正在调用放置GET的函数并返回成功响应。
alert(ajax('localhost/hello','',false);
如果我发出警报(get_ajax()),我会收到'未定义'的警告..即使有返回值
我看到它的事件循环问题,但我在ajax调用中async:false。想法?谢谢。
答案 0 :(得分:3)
这是被问过一百万次的问题之一,但搜索几乎是不可能的。无论如何,问题是当你从这里回来时......
success: function(response) {
return response;
}
...您不是从ajax()
函数返回,而是从匿名success
函数返回。要从main函数返回值,您必须将字符串保存到变量中,以便可以从正确的函数返回。
var val = '';
$.ajax({
// ....
success: function(response) {
val = response;
},
// ....
});
return val;
请注意,这仅在您进行同步通话时有效。对于异步调用,最好将回调函数作为参数并将其用作成功函数。
答案 1 :(得分:1)
对于同步通话,我相信你会这样做
var data;
$.ajax({
...
async: false,
success: function(response) {
data = response;
}
});
return data;
答案 2 :(得分:0)
您的ajax
函数包含$.ajax
调用,不返回任何内容:undefined
来自的地方。要在alert
示例中获得一些价值,您应该在函数的底部添加一个return语句。
要获得有关回复的提醒,请执行以下操作:
success: function(response) {
alert(response);
},