我试图从函数返回$ ajax调用返回的值,但它只返回“undefined”。如果警告来自ajax调用的“响应”它将返回rigth值。这是代码,我做错了什么?:
$(".insertCandidate").live("click", (function(e) {
var ids = this.id.toString().split("|");
var tempCanID = ids[1];
var canID = ids[0];
var tempName = CandidateName(tempCanID);
var canName = CandidateName(canID);
//alert("HTML: "+tempName);
$("#mergeCandidateDialog").empty();
$.blockUI({ message: $("#mergeCandidateDialog").append(
"<div>" + tempName + "s ansøgning til vil blive lagt under den eksiterende ansøger s data.<br /><br /> Ønsker du at fortsætte?<br /><br /></div>" +
"<div id=\"content\">" +
"<input type=\"button\" id=\"" + ids + "\" class=\"insertCandidateYes\" value=\"Ja\" />" +
"<input type=\"button\" id=\"insertCandidateNo\" value=\"Nej\" /></div>"), css: { cursor: 'default', fontWeight: 'normal', padding: '7px', textAlign: 'left' }
});
}));
function CandidateName(candidateID) {
var returnstring;
$.ajax({
type: "POST",
url: "/Admin/GetCandidateName/",
data: { 'candidateID': candidateID },
succes: function(response) {
returnstring = response;
return;
},
error: function(response) {
alert("FEJL: " + response);
}
});
return returnstring;
}
答案 0 :(得分:3)
除非您等待使用asynch:false完成ajax调用,否则无法执行此操作。但是我不会这样做,因为它会锁定浏览器,如果调用无法返回,则用户将不得不崩溃。最好重构脚本并在.ajax调用的成功函数内调用回调函数。
查看我对类似问题的回答here
答案 1 :(得分:1)
在.ajax调用中添加async true属性:
type: "POST",
async: false, // ADD THIS
url: "/Admin/GetCandidateName/",
另外,你成功地取消了“s”。
可能会这样做。
答案 2 :(得分:0)
你正在做2个相同的ajax请求。要提高性能,您应该将一组ID传递给CandidateName方法,然后服务器端脚本也应该返回匹配名称的数组。
答案 3 :(得分:-2)
$.ajax({
type: "POST",
url: "/Admin/GetCandidateName/",
data: { 'candidateID': candidateID },
success: function(response) {
return response;//USE THIS
//THIS WILL RETURN FROM THE FUNCTION WITHOUT RETURNING ANY VALUE
//return;
},