![](/img/trans.png)
[英]Javascript call function once loop finishes and jQuery populates content
[英]Set variables in JavaScript once function finishes
我有兩個使Ajax調用的函數:getData和getMoreData。 getMoreData需要一個依賴於url變量getData的url變量。 這個問題繼續: 從<select>追加字符串以形成新變量 。
通過將從getData接收到的項添加到基本URL,我創建了一個用於getMoreData url的新變量(我們稱之為NewDimensionURL)。 但是,NewDimensionURL將顯示錯誤,因為原始列表(來自getData)尚未填充,並且不會在基本URL上附加任何內容。
我的想法是,一旦getData完成填充組合框,就設置NewDimensionalURL,以便getMoreData可以在之后運行。
var GetDimensions = 'SomeURL1';
//--Combines URL of GetDimensionValues with #dimensionName (the select ID)
var UrlBase = "Required URL of getMoreData";
var getElement = document.getElementById("dimensionName");
var GetDimensionValues = UrlBase + getElement.options[getElement.selectedIndex].text;
function handleResults(responseObj) {
$("#dimensionName").html(responseObj.DimensionListItem.map(function(item) {
return $('<option>').text(item.dimensionDisplayName)[0];
}));
}
function handleMoreResults (responseObj) {
$("#dimensionId").html(responseObj.DimensionValueListItem.map(function(item) {
return $('<option>').text(item.dimensionValueDisplayName)[0];
}));
}
function getData() {
debugger;
jQuery.ajax({
url: GetDimensions,
type: "GET",
dataType: "json",
async: false,
success: function (data) {
object = data;
handleResults(data);
}
});
}
function getMoreData() {
debugger;
jQuery.ajax({
url: GetDimensionValues,
type: "GET",
dataType: "json",
async: false,
success: function (data) {
object = data;
handleMoreResults (data);
}
});
}
已回答
重新排序為:
var GetDimensionValues;
function handleResults(responseObj) {
$("#dimensionName").html(responseObj.DimensionListItem.map(function(item) {
return $('<option>').text(item.dimensionDisplayName)[0];
}));
GetDimensionValues = UrlBase + getElement.options[getElement.selectedIndex].text;
}
創建了onchange函數Repopulate()以便解析getMoreData()並填充handleMoreResults()。
我猜你只是做getData(); getMoreData()
getData(); getMoreData()
背對背? 如果是這樣,那么您在運行getmoreData之前,getData從未從服務器返回響應。
您必須鏈接函數,以便只有在getData得到響應時才執行getMoreData。 例如
$.ajax($url, {
success: function(data) {
getMoreData(); // call this when the original ajax call gets a response.
}
});
沒有看到您的代碼,很難說這是否是正確的解決方案,但是您應該嘗試鏈接函數:
$.ajax({url: yourUrl}).then(function (data) {
// deal with the response, do another ajax call here
}).then(function () {
// or do something here
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.