如何回报"ajax success"的承诺?



我需要编写一个函数,为我准备一个HTML来放入我的网站,我试过这样的

function prepareHTML(valId){
$.ajax({
type: "POST",
url: "SOAPulr_getData",
data: {operationId: valId}
})
.done(function(result, status, jqXHR){
var def = $.Deferred();
var response = jqXHR.responseText;
var outputHTML;
[... here i generate HTML code ...]
def.resolve(outputHTML);
return def.promise();
});
}

现在,当我尝试运行这个函数时:

prepareHTML(22)
.done(function(data){
console.log(data)
});

我得到一个错误:TypeError:prepareHTML(…(未定义当我运行prepareHTML(22(时,控制台中没有错误。

我做错了什么?

--

向致以最良好的问候

ssnake

prepareHTML没有return语句,因此返回undefined

return $.ajax...

是的,我可以这样做:

function prepareHTML(valId){
res = $.ajax({
type: "POST",
url: "SOAPulr_getData",
data: {operationId: valId}
});
return res.promise();
}

它可以工作,但我必须将我的HTML生成为done函数:

prepareHTML(22).done(function(result, status, jqXHR){
var response = jqXHR.responseText;
[... here i generate HTML code ...]
});

问题是:是否可以预先处理响应,以便在完成的功能中准备好HTML

我需要这样的东西:

prepareHTML(22).done(function(myHTML){
// here I need ready HTML code prepared into prepareHTML() function
$("#myId").html(myHTML);
});

最新更新