我有两个函数可以调用Ajax:getData和getMoreData。 getMoreData需要一个依赖于url变量getData的url变量。这些问题将继续:String append from <select> to form new variable。
通过将从getData接收到的项目附加到基本URL上,我创建了一个新变量(让我们调用此NewDimensionURL),我将其用于getMoreData url。但是,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()。
答案 0 :(得分:0)
我猜你只是背靠背做getData(); getMoreData()
?如果是这样,那么在getData从服务器获得响应之前,你正在运行getmoreData。
您必须链接这些函数,以便getMoreData仅在getData获得响应时执行。 e.g。
$.ajax($url, {
success: function(data) {
getMoreData(); // call this when the original ajax call gets a response.
}
});
答案 1 :(得分:0)
如果没有看到您的代码,很难说这是否是正确的解决方案,但您应该尝试将这些功能链接起来:
$.ajax({url: yourUrl}).then(function (data) {
// deal with the response, do another ajax call here
}).then(function () {
// or do something here
});