#javascript #jquery #ajax
#javascript #jquery #ajax
Вопрос:
я работаю над существующим большим проектом, в котором у меня есть такие требования, как
Вопрос: мне нужно добавить auth_token
ко всем существующим API GET
и POST
почти 1239 в количестве. как перехватить все GET,POST
, чтобы добавить auth_token
.
После перехвата и подключения auth_token
все API должны иметь auth_token
ключ
Вот как мне нужно, чтобы все API вызывались с помощью auth_token
var AUTH_TOKEN = '8450d1eaf4fe0daf6dd';
//code to intercept all ajax call to add auth_key into it
$.ajax({
url: 'https://jsonplaceholder.typicode.com/todos/1',
type:'GET',
success:function(){
console.log('sent url must contain auth_token',this.url);
}
});
$.ajax({
url: 'https://jsonplaceholder.typicode.com/posts',
type:'POST',
data:JSON.stringify({"userId":919,id:966,title:'a'}),
success:function(){
console.log('sent data must conatain auth_token',this.data);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Ответ №1:
Вы можете использовать beforeSend
метод $.ajaxSetup
добавления данных ко всем отправляемым вами запросам.
Стоит отметить, что даже несмотря на то, что свойство добавлено, ваш API по-прежнему возвращает ошибку, указывающую, что auth_token
требуется. Проверьте документацию API, чтобы убедиться, что его не нужно отправлять в запросе другим способом, например, в качестве заголовка.
var AUTH_TOKEN = '8450d1eaf4fe0daf6dd';
$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
if (settings.type === 'GET') {
settings.url = (settings.url.indexOf('?') == -1 ? '?' : 'amp;') 'auth_token=' AUTH_TOKEN
} else {
let data = JSON.parse(settings.data || '{}');
data.auth_token = AUTH_TOKEN;
settings.data = JSON.stringify(data);
}
}
});
$.ajax({
url: 'https://jsonplaceholder.typicode.com/todos/1',
type: 'GET',
success: function() {
console.log('sent url must contain auth_token', this.url);
}
});
$.ajax({
url: 'https://jsonplaceholder.typicode.com/posts',
type: 'POST',
data: JSON.stringify({
"userId": 919,
id: 966,
title: 'a'
}),
success: function() {
console.log('sent data must conatain auth_token', this.data);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Комментарии:
1. я думаю, что для get он не прикреплен, для post он работает нормально
2. ожидалось, что ПОЛУЧИТСЯ вот так
https://jsonplaceholder.typicode.com/todos/1?s={auth_token:'8450d1eaf4fe0daf6dd'}
3. Вы правы, я обновил до dd параметр querystring для запроса GET
4. Подождите, вы хотите отправить JSON в параметре querystring …? Это ОЧЕНЬ странная вещь
5. >>> Подождите, вы хотите отправить JSON в параметре querystring… НЕ ТРЕБУЕТСЯ работает нормально большое спасибо