Если вы проверите jQuery.ajax () документацию , вы можете найти:
error
Функция, которая будет вызываться, если запрос fail (...) Примечание. Этот обработчик не вызывается для междоменного скрипта и междоменных запросов JSONP. Это событие Ajax.
blockquote>Из-за этого вы вынуждены искать обходное решение. Вы можете указать время ожидания, чтобы вызвать обратный вызов ошибки. Это означает, что в течение заданного периода времени запрос должен быть успешно завершен. В противном случае предположим, что он потерпел неудачу:
$.ajax({ ... timeout: 5000, // a lot of time for the request to be successfully completed ... error: function(x, t, m) { if(t==="timeout") { // something went wrong (handle it) } } });
Другие проблемы в вашем коде ...
Пока JSONP (посмотрите здесь ] и здесь ) можно использовать для преодоления ограничения политики происхождения, вы не можете использовать POST с помощью JSONP (см. CORS ), потому что это просто не работает way - он создает элемент для извлечения данных, который должен выполняться с помощью запроса GET. Решение JSONP не использует объект XmlHttpRequest, поэтому он не является запросом AJAX в стандартном способе понимания, но контент по-прежнему доступен динамически - никакой разницы для конечного пользователя.
$.ajax({ url: url, type: "GET" dataType: "jsonp", ...
Во-вторых, вы предоставляете данные некорректно. Вы нажимаете javascript-объект (созданный с использованием объектных литералов) на провод вместо его сериализованного представления JSON. Создайте строку JSON (не вручную, используйте, например, преобразователь
JSON.stringify
):$.ajax({ ... data: JSON.stringify({u: userid, p: pass}), ...
В последнем выпуске вы установили
async
вfalse
, а в документации указано:Запросы междоменных и dataType: запросы «jsonp» не поддерживают синхронную работу.
blockquote>