[英]JQuery Deferred & cascading select boxes
在頁面加載時,我試圖填充選擇框。 命中#select2
數據的URL取決於#select1
的值。 由於第一個選擇框也是從Ajax調用接收的數據中填充的,因此我無法事先知道頁面加載時所選的選項。 initData()
在身體負荷時調用。
我嘗試了以下操作,但是在initData()
當getSelectData('#select2', 'urlBase/' + selectOneValue + '/urlSuffix');
時selectOneValue
為null
getSelectData('#select2', 'urlBase/' + selectOneValue + '/urlSuffix');
叫做。
function initData() {
initEnvs().then(function () {
var selectOneValue= $('#select1').val();
getSelectData('#select2', 'urlBase/' + selectOneValue + '/urlSuffix');
});
}
function initEnvs() {
return $.Deferred(function (def) {
getSelectData('#select1', someUrl);
def.resolve();
}).promise();
}
function getSelectData(selectId, urlFragment) {
$.ajax({
type: "GET",
url: "/data/" + urlFragment,
dataType: "json",
success: function (data) {
appendSelectOptions(selectId, data);
},
error: function (xhr) {
//handle error
}
});
}
我在這里做錯了什么?
我沒有測試過,但是應該可以。 讓我知道是否。
function initData() {
initEnvs().then(function () {
var selectOneValue= $('#select1').val();
console.log("============ 2");
getSelectData('#select2', 'urlBase/' + selectOneValue + '/urlSuffix').then(function(data){
console.log("Are we here?");
appendSelectOptions('#select2', data);
});
});
}
function initEnvs() {
return $.Deferred(function (def) {
getSelectData('#select1', someUrl).then(function(data){
console.log(data);
console.log("============");
appendSelectOptions('#select1', data);
});
def.resolve();
}).promise();
}
function getSelectData(selectId, urlFragment) {
return $.Deferred(function (def) {
$.ajax({
type: "GET",
url: "/data/" + urlFragment,
dataType: "json"
});
def.resolve();
}).promise();
}
initData();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.