У меня есть приведенный ниже код, который я использую для достижения конечной точки node.js. Однако, когда он попадает, URL-адрес конечной точки добавляет к нему &
вот так:
http://localhost:3004/expenses/?q=&12/02/2014
Следовательно, я не получаю желаемого результата.
Вот как выглядит мой код,
$('#myForm').on('submit', (e)=>{
e.preventDefault();
$.ajax({
type: 'GET',
url: 'http://localhost:3004/expenses/?q=',
processData: false,
data: $('#startDate').val(),
contentType: 'application/json',
success:(data, status)=>{
// alert(status);
},
error:()=>{
alert('problem');
}
})
})
Может кто-нибудь пролить свет?
В противном случае удалите ?q=
, удалите processData
и contentType
, поставьте data:{ q: $('#startDate').val() }
и на этом закончите.
Пробовал 1, 2 и последний комментарий, но не повезло. :(
Все, что мне нужно, это избавиться от &
из => ?q=&12/02/2014
, который автоматически добавляется.
Вы удалили data
, contentType
, processData
и изменили url: 'http://localhost:3004/expenses/?q='+ $('#startDate').val()
, и это не сработало?
Ага.. Последний делает свое дело!..
Проблема, скорее всего, связана с тем, что processData: false
сообщает jQuery не форматировать данные для запроса. Учитывая, что это запрос GET, данные должны быть указаны в параметрах запроса. И поскольку в вашем URL уже есть ?
, jQuery, вероятно, ожидает, что вы уже отформатировали данные как пары ключ-значение, поэтому он просто добавляет к ним &
, чтобы они работали.
Понял @Taplar. Мне было интересно, как это было добавлено. Не могли бы вы опубликовать это как ответ. Я приму это.
Проблема, скорее всего, связана с тем, что processData: false
сообщает jQuery не форматировать данные для запроса, а URL-адрес GET уже содержит ?
. Учитывая, что вы не даете запрос json, я бы предложил сократить ваш вызов, чтобы упростить проблему.
$.ajax({
type: 'GET',
url: 'http://localhost:3004/expenses/',
data: { q: $('#startDate').val() },
success:(data, status)=>{
// alert(status);
},
error:()=>{
alert('problem');
}
});
Если вы не укажете processData
в параметрах, он преобразует данные, которые вы ему предоставите, в параметр запроса для запроса. Учитывая, что это запрос GET, он сгенерирует для вас ?q=<value>
. И, как упоминалось в комментариях, вам не нужно contentType: application/json
в параметрах, поскольку это говорит jQuery указать тип контента в запросе, чтобы сервер знал, что вы отправляете его json в теле. Которым ты не являешься :)
1) Почему бы не добавить это к URL-адресу самостоятельно, если хотите
processData: false
? 2) Удалить тип контента. Вы не помещаете json в тело запроса.