у меня есть вызов Ajax, и это работает хорошо, когда я называю новый АЯКС вызов внутри старой, я получил ошибку в первом вызовевызова два Аякс функции внутри друг друг
только один Аякс вызова
$.getJSON("http://localhost/Mar7ba/Ontology/getRelatedConceptsAndRelations/"+conceptName+"/TRUE",function(data){
var concepts = data[0];
var relations = data[1];
for(var i = 0 ; i < concepts.length ; i++){
var IOS = '';
$("#ioAddRelatedConcepts").append('<p>\n\
connect to\n\
<span class="ioAddConcept">'+concepts[i]+'</span>\n\
with\n\
<span class="ioAddRelation">'+relations[i]+'</span>\n\
<select name ="concetedIOs[]" class="TypeSelector">\n\
'+IOS+'</select>\n\
<span class="errorMessage"></span>\n\
<a href="#" class="removeA" id="aioRemoveIO">remove</a>\n\
</p>\n\
<p>');
}
});
после добавления этого вызова Ajax
$.getJSON("http://localhost/Mar7ba/Ontology/getRelatedConceptsAndRelations/"+conceptName+"/TRUE",function(data){
var concepts = data[0];
var relations = data[1];
for(var i = 0 ; i < concepts.length ; i++){
$.getJSON("http://localhost/Mar7ba/InformationObject/getIOsForConcept/"+concepts[i]+"/TRUE",function(data1){
var IOS = '';
$("#ioAddRelatedConcepts").append('<p>\n\
connect to\n\
<span class="ioAddConcept">'+concepts[i]+'</span>\n\
with\n\
<span class="ioAddRelation">'+relations[i]+'</span>\n\
<select name ="concetedIOs[]" class="TypeSelector">\n\
'+IOS+'</select>\n\
<span class="errorMessage"></span>\n\
<a href="#" class="removeA" id="aioRemoveIO">remove</a>\n\
</p>\n\
<p>');
});
}
});
после этого понятие [I] и отношение [I] будет как undifined и data1.le ngth всегда нуль и это второй PHP код AJAX
public function getIOsForConcept($conceptName, $AJAX) {
if ($AJAX) {
$results = $this->model->getIOsForConcept($conceptName);
$IOs = array();
$i = 0;
while ($row = $results->fetch()) {
$IOs[$i] = $row['name'];
$i++;
}
return json_encode($IOs);
}
}
и я попробовал его и он работает хорошо
Возможно ** ** не рекомендуется делать вызовы в цикле 'for', так как они возвращаются асинхронно, т. Е. Сам цикл будет (почти наверняка) завершен до того, как кто-либо из них вернется, что может усложнить вещи. Если вы хотите, чтобы они происходили последовательно, вы должны вложить их друг в друга. – delicateLatticeworkFever
@ goldilocks, но для каждого значения первого цикла я должен получить данные с сервера, поэтому я помещаю ajax-вызов в цикл любым способом, почему concpetp [i] и отношение [i] не работают после объявления seocnd ajax call – LinCR
Вам, вероятно, понадобится передать концепцию и отношение во второй вызов ajax и вернуть его, чтобы использовать его, это единственный способ убедиться, что у вас есть правильные значения переменных. Также вы не используете возвращаемое значение из второго вызова ajax? – Timm