我想在這裏用js寫一個回調函數。問題是返回的值不正確。 ajax調用中的變量「d」包含正確的數據。但done(..)函數中的變量a沒有。有誰知道如何分配d的值?Ajax請求中的Javascript回調函數
function render_confirmation_email(data, cart, delivery_date){
console.log("Render confirmation email")
var purchaseTable = "<table>"
for (var i = 0; i < cart.length; i++) {
console.log(i);
var concept = cart[i].name;
var price = cart[i].price;
purchaseTable += "<tr>"
purchaseTable += "<td>" + concept + " - </td>"
purchaseTable += "</tr>"
purchaseTable += "<tr>"
purchaseTable += "<td>" + price + " kr\n</td>"
purchaseTable += "</tr>"
}
purchaseTable += "</table>"
purchaseTable += "<br> <p>It will be delivered on " + delivery_date + "</p>"
var tempDom;
tempDom = $('<div></div>').append(data);
tempDom.find('#purchaseTable').append(purchaseTable);
return tempDom.text()
}
function get_confirmation_email(cart, delivery_date, render_confirmation_email) {
return $.ajax({
type: "GET",
url:"/confirmation_email",
async: false,
success:function(data) {
console.log("success");
// render_confirmation_email called when data is ready
var d = (render_confirmation_email(data, cart, delivery_date));
console.log("Rendering done")
console.log(d)
return d
}
});
}
var a = get_confirmation_email(JSONcart, form.querySelector('input[name=deliverydate]').value, render_confirmation_email);
a.done(function(data) {
console.log("Function done");
console.log(data);
});
謝謝!
無關您的問題,但你應該真的不使用'異步:FALSE' –
記錄並刪除:)它是從一個失敗的嘗試離開那裏來解決我的問題。 – k1nda
'return'在'success'中不起作用 – charlietfl