Как обрабатывать не удалось открыть ошибку потока, help (javascript, ajax)

63
5

Я работаю над страницей, которая одновременно вызывает 3 (или более) одной и той же функции jscript. Я использую функцию, которая проверена и работает с несколькими параллельными запросами ajax (найденными в Интернете, она работает, потому что теперь я столкнулся с этой новой проблемой).


html - это просто


<div  id="1"> <script> ajax2(); </script> </div> 
<div id="2"> <script> ajax2(); </script> </div>
<div id="3"> <script> ajax2(); </script> </div>

Как вы можете видеть, html запрашивает 3 одновременных вызова одинаковой функции.


Функция ajax2() jscript имеет эту строку, чтобы запросить открытие файла


xhrObj.open("GET", "../testa.php",true);

Проблема заключается в том, что иногда файл недоступен для открытия из-за слишком большого количества одновременных запросов, а программа дает


Warning: Unknown: failed to open stream: Permission denied in Unknown on line 0 

Fatal error: Unknown: Failed opening required 'C:/xampp/htdocs/test/testa.php'


Как обработать эту ошибку и заменить запрос открытого файла так, чтобы он открыл другой файл (т.е. testb.php)?


Я попытался обработать подстановку методом использования testb.php и testc.php в качестве подстановок для testa.php, если testa.php недоступен.


var x = xhrObj.open("GET", "../testa.php",true);
if (!x) { var y = xhrObj.open("GET", "../testb.php",true);
if (!y) { xhrObj.open("GET", "../testc.php",true);}
}

но код не работает. Синтаксис неверен, поскольку он дает ту же ошибку, и предупреждения показывают, что testa.php всегда является файлом, который недоступен.


Каков правильный синтаксис проверки того, является ли xhrobj.open в порядке, а если нет, откройте другой файл?


ТИА

спросил(а) 2021-01-19T19:09:53+03:00 6 месяцев, 2 недели назад
1
Решение
78

Вы делаете асинхронный запрос, а это значит, что вы только запускаете запрос, и метод немедленно возвращается, не зная, будет ли запрос работать или нет.

Вам либо нужно использовать метод обратного вызова, который вызывается при поступлении ответа, либо вам нужно сделать синхронный запрос.

ответил(а) 2021-01-19T19:09:53+03:00 6 месяцев, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема