У меня есть встроенная проблема XMLHttpRequest;
Поток данных должен идти следующим образом:
Interface.php использует modifyRecords.js (XMLHttpRequest) для вызова информации из modifyRecords.php , которая, в свою очередь, использует showRecords.js (XMLHttpRequest) для вызова информации из showRecords.php .
Если бы я мог как-то добиться этого, это сэкономило бы тонну копирования и / или переписывания кода.
Когда я возвращаюсь назад, чтобы определить, где находятся ошибки, проблем не возникает showRecords.php и modifyRecords.php оба загружаются нормально по отдельности, только когда AJAX вызывает другой AJAX полностью разбивается.
Мельчайшая песчинка такова:
Мой пользовательский интерфейс вызывает modifyRecords.js следующим образом:
function modifyRecords(cell,report,column,oldValue)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(cell).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","modifyRecords.php?report="+report+"&column="+column+"&oldValue="+oldValue,true);
xmlhttp.send();
}
modifyRecords.php вызывает другую функцию AJAX с именем showRecords.js;
function showRecords(str,column,nextDiv,oldValue)
{
if (str== null)
{
document.getElementById(nextDiv).innerHTML="----------------------------------------";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
var xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(nextDiv).innerHTML=xmlhttp.responseText;
document.getElementById(nextDiv).value = oldValue ;
}
}
xmlhttp.open("GET","showRecords.php?"+column+"="+str,true);
xmlhttp.send();
}
Проблема заключается в том, что каждый из них работает изолированно, однако, когда я использую одну функцию AJAX для вызова страницы, которая зависит от второй функции AJAX, записи не загружаются.
Я знаю, что это как-то связано с синхронностью, потому что мое единственное предположение состоит в том, что ссылочная страница не загрузилась, когда вызывающая функция вызывает ее.
Я попытался установить для параметров значение "false" для синхронного, вместо обычного асинхронного, однако это нарушает любую функцию.
Какое будет лучшее решение?
Я рассмотрел объединение всех моих функций AJAX, что потребовало бы тонны переписывания, чтобы сделать их более универсальными и функциональными для обеих сред.