Это чистое решение для JavaScript без каких-либо библиотек или плагинов:
document.addEventListener('click', function (e) {
if (hasClass(e.target, 'bu')) {
// .bu clicked
// Do your thing
} else if (hasClass(e.target, 'test')) {
// .test clicked
// Do your other thing
}
}, false);
, где hasClass
-
function hasClass(elem, className) {
return elem.className.split(' ').indexOf(className) > -1;
}
Кредит относится к Dave и Sime Vidas
Использование более современных JS, hasClass
может быть реализовано как:
function hasClass(elem, className) {
return elem.classList.contains(className);
}
То, что вы видели в Firefox, не было фактическим запросом; обратите внимание, что HTTP-метод - OPTIONS, а не POST. Фактически это был «предполетный» запрос, который браузер делает, чтобы определить, разрешен ли междоменный запрос AJAX:
Заголовок заголовка Access-Control-Request-Headers в предполетном запросе включает список заголовков в фактическом запросе. Затем ожидается, что сервер сообщит, поддерживаются ли эти заголовки в этом контексте или нет, прежде чем браузер отправит фактический запрос.
Попробуйте использовать драгоценный камень rack-cors . И добавьте поле заголовка в ваш вызов ajax.
И поэтому вы не можете создать бота с Javascript, потому что ваши параметры ограничены тем, что позволяет браузер. Вы не можете просто заказать браузер, который следует за политикой CORS
, с которой следуют большинство браузеров, для отправки случайных запросов на другое происхождение и позволяет вам получить ответ просто!
Кроме того, если вы попытались для редактирования некоторых заголовков запросов вручную, как origin-header
из инструментов разработчиков, которые поставляются с браузерами, браузер откажется от вашего редактирования и может отправить запрос предпросмотра OPTIONS
.
Вот пример того, как установить заголовок запроса в JQuery Ajax Call:
$.ajax({
type: "POST",
beforeSend: function(request) {
request.setRequestHeader("Authority", authorizationToken);
},
url: "entities",
data: "json=" + escape(JSON.stringify(createRequestObject)),
processData: false,
success: function(msg) {
$("#results").append("The result =" + StringifyPretty(msg));
}
});
Этот код ниже работает для меня. Я всегда использую только отдельные скобки, и он отлично работает. Я предлагаю вам использовать только отдельные скобки или только двойные скобки, но не перепутаны.
$.ajax({
url: 'YourRestEndPoint',
headers: {
'Authorization':'Basic xxxxxxxxxxxxx',
'X_CSRF_TOKEN':'xxxxxxxxxxxxxxxxxxxx',
'Content-Type':'application/json'
},
method: 'POST',
dataType: 'json',
data: YourData,
success: function(data){
console.log('succes: '+data);
}
});
Надеюсь, что это ответит на ваш вопрос ...