function vote_helper(content_id, thevote){
var result = "";
$.ajax({
type:"POST",
url:"/vote",
data:{'thevote':thevote, 'content_id':content_id},
beforeSend:function() {
},
success:function(html){
result = html;
}
});
return result;
};
我想要返回结果。但它正在返回空白字符串。
答案 0 :(得分:2)
简短回答,你不能。
长答案,.ajax
使用回调来返回值。这意味着在return
触发时可能已经或可能没有返回该值。但无论哪种方式,它都是在另一种情况下完成的。
如果您希望让此模拟返回一个值,请在函数中添加一个新参数来替换ajax回调。例如:
function vote_helper(content_id, thevote, callback){
var result = "";
$.ajax({
type:"POST",
url:"/vote",
data:{'thevote':thevote, 'content_id':content_id},
beforeSend:function() {
},
success:callback
});
return result;
};
vote_helper(x,y,function(html){
result = html;
});
但无论是否解决,回复永远不会与调用函数的代码在同一工作路径中。您需要等待响应并从那里获取处理。
答案 1 :(得分:1)
由于您正在进行AJAX调用,因此您需要在success
回调中处理AJAX调用的结果:
function vote_helper(content_id, thevote){
$.ajax({
type:"POST",
url:"/vote",
data:{'thevote':thevote, 'content_id':content_id},
beforeSend:function() {
},
success:function(html){
/* Do something like call a function with html */
}
});
};
答案 2 :(得分:1)
ajax在您的功能结束时不会完成,因此您无法返回结果。相反,您必须修改函数以接受回调,并使用结果调用该回调:
function vote_helper(content_id, thevote, callback) { // extra callback argument
$.ajax({
type: "POST",
url: "/vote",
data: {'thevote':thevote, 'content_id':content_id},
beforeSend: function() {},
// Point directly to the callback here
success: callback
});
};
答案 3 :(得分:0)
如果您希望在等待服务器响应时UI完全没有响应,您可以执行以下操作:
function vote_helper(content_id, thevote){
var result = "";
$.ajax({
type:"POST",
async: false, //This line will make your code work
url:"/vote",
data:{'thevote':thevote, 'content_id':content_id},
beforeSend:function() {
},
success:function(html){
result = html;
}
});
return result;
};
但是没有人希望UI挂起,所以真正的答案是其他建议,而不是返回一个值,你的方法应该采取一个回调,当你的异步方法返回时,它将传递'返回值'。