Thực hiện getOffers trả về jqXHR getData trả về như bên dưới -
var myApp = (function () {
var Var1 = [];
var getData = function (sendData) {
return $.ajax({
type: "POST",
url: URL,
data: sendData,
datatype: "json",
success: function (results) {}
});
};
var getOffers = function (sendData) {
// return the jqXHR returned by getData
return getData(sendData);
};
return {
getOffers: getOffers
};
})();
jqXHR đối tượng được trả về bởi $.ajax({}) là một Promise -Khi bạn nhận được phản hồi thành công cho yêu cầu Ajax - bạn có thể đính kèm một trình xử lý thành công như thế này - bên ngoài yêu cầu ajax của bạn
myApp.getOffers({
'showData': 1,
'myLocation': "Location1",
'clientID': "Client1"
}).done(function (data, textStatus, jqXHR) {
// work with DOM here
});
Thông tin thêm về Jquery Deferreds / Promises tại đây -
Ngoài ra, bạn đã tạo getData , getOffers toàn cầu do thiếu var phía trước trong khi khai báo.
Theo nhận xét của bạn về việc sử dụng POST thay vì GET , quy tắc chung là - GET là để truy xuất dữ liệu, POST để lưu - chỉ vì bạn sử dụng POST điều đó không có nghĩa là một số người không thể đánh hơi dữ liệu bạn đang gửi, nó chỉ là một phần của phần thân yêu cầu thay vì URL yêu cầu. Nếu bạn cho rằng dữ liệu bạn đang gửi thực sự nhạy cảm, bạn nên xem xét việc bật SSL(HTTPS) cho ứng dụng của bạn.