function ChatServerQuery(data_json) {
var result = null;
$.ajax({
url: 'chat/backend/',
type: 'POST',
data: data_json,
success: function(json) {
result = json
}
})
return result
}
我的功能,执行对服务器的请求。问题是我无法从服务器文本返回。我不知道如何从匿名函数(事件成功)到ChatServerQuery(您可以轻松地将其取回)。
答案 0 :(得分:10)
您最好更改您的方法以反映AJAX请求的异步性质。
function ChatServerQuery(data, callback) {
$.ajax({
url: 'chat/backend/',
type: 'POST',
data: data,
success: callback
});
}
然后你会用它:
ChatServerQuery(dataObject, function(data) {
// work with your data came from server
});
$.fn.ajax
返回实现Promise iterface的对象,因此您可以像这样使用它:
function ChatServerQuery(data) {
return $.ajax({
url: 'chat/backend/',
type: 'POST',
data: data
});
}
ChatServerQuery(dataObject).done(function(data) {
// work with your data came from server
});
此选项为您提供更大的灵活性。
答案 1 :(得分:1)
您的函数在执行AJAX回调之前很久就会返回result
。依赖于请求的结果的任何内容都有在回调中或之后发生。
答案 2 :(得分:0)
而不是尝试在成功处理程序中将json
分配给result
,而是在那里(或从它调用的函数中)执行逻辑。或者,如果您需要等待回复,请按照其他评论进行操作。
答案 3 :(得分:0)
函数ChatServerQuery(url,data){
return $.ajax({ type: "POST",
url: url,
data: data,
async:false,
success: function(status){
}
}).responseText;
}
//现在,您将通过ajax调用从服务器端获取响应文本
答案 4 :(得分:-2)
请求需要同步才能以这种方式工作。
将async: false
添加到ajax()
方法的参数对象。