在页面加载时,我尝试填充选择框。要为#select2
的数据点击的网址取决于#select1
的值。由于第一个选择框也是从Ajax调用收到的数据中填充的,因此我无法事先知道所选选项在页面加载时会是什么。在身体负荷上调用initData()
。
我已尝试过以下操作,但在调用initData()
时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
}
});
}
。
2018-02-08 13:07:05 +0000 [warn]: pattern not match: "192.168.6.121 - - [08/Feb/2018:18:37:05 +0530] \"POST /shorten HTTP/1.1\" 200 496 \"-\" \"-\" 6"
我在这里做错了什么?
答案 0 :(得分:0)
我没有对此进行过测试,但这应该可行。如果没有,请告诉我。
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();