Как обработать не удалось открыть поток ошибок, помогите (javascript, ajax) - PullRequest
1 голос
/ 02 августа 2010

Я работаю над страницей, которая одновременно вызывает 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 одновременных вызова одной и той же функции.

Функция jscript ajax2 () содержит эту строку для запроса открытия файла

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, и, если нет, для открытия другого файла?

ТИА

1 Ответ

0 голосов
/ 02 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...