Обработка ошибок в javascript
Ниже приведен Javascript для страницы, над которой я работаю в качестве демонстрации того, как выполнять фоновые задачи в стиле AJAX. Событие onchange элемента управления select вызывает функцию AjaxRequest.
Если код, выполняемый по адресу в переменной url, возвращает состояние 500, он завершает выполнение строки после catch(err). Я думал, что он выполнит предупреждение и вообще не вызовет AjaxResults. В Chrome с показом консоли он показывает, что результаты отправки составляют 500.
Код отлично работает, когда нет ошибки. Мне нужно знать, почему обработка ошибок не работает.
Что я уже пробовал:
function removeOptions(selectbox) { var i; for(i = selectbox.options.length - 1 ; i >= 0 ; i--) { selectbox.remove(i); } } function AjaxResults(xhr, funct) { var xmldoc = xhr.responseXML; // process the returned data switch (funct) { case 1: try { ddlbProducts = document.getElementById("products"); removeOptions(ddlbProducts); var products = xmldoc.getElementsByTagName("d_products_row"); for (var i = 0; i < products.length; i++) { var prodname = xmldoc.getElementsByTagName('productname').item(i).firstChild.data; var productid = xmldoc.getElementsByTagName('productid').item(i).firstChild.data; var option = document.createElement("option"); option.innerHTML = prodname; option.value = productid; ddlbProducts.options.add(option); } } catch(err) { document.documentElement.innerHTML = xhr.responseText; } break; default: alert('Unsupported function: ' + funct); } } function AjaxRequest(url, funct) { xhr = new XMLHttpRequest(); xhr.onload = function () { if (xhr.status = 200) { AjaxResults(xhr, funct); } else { alert('Error: ' + xhr.statusText); } }; xhr.open('GET', url, true); xhr.send(); }