#jquery #ajax #onclick
#jquery #ajax #onclick
Вопрос:
Я не могу найти ответ из любого поиска, который я сделал.
У меня есть простая кнопка, использующая тег привязки в HTML:
<a id="beginUpload" href='/upload' class='button-style'>Upload</a>
Данные генерируются из элемента ввода в HTML с идентификатором ‘file’.
Мой метод jQuery заключается в следующем:
$("#beginUpload").click(function () {
var data = {
mimeType : document.getElementById('file').files[0].type,
fileSize : document.getElementById('file').files[0].size
};
console.log(data);
$.ajax({
type: 'POST',
url: '/post_asset/',
data: data,
dataType: 'json',
success: function (result) {
console.log(result);
},
error: function (error) {
console.log(error);
}
});
});
Когда я запускаю содержимое функции click (после первого ввода файла), она возвращает мой ожидаемый ответ, который выглядит примерно так:
Object {success: true, upload_url: "http://my_url", id: 12, mime_type: "audio/mp3", size: "52981888"}
Однако, когда я запускаю этот код с помощью кнопки, я получаю сообщение об ошибке с пустым текстом ErrorResponse следующим образом:
Object {readyState: 0, responseText: "", status: 0, statusText: "error"}
Есть идеи, что я делаю не так?
Комментарии:
1. Возможно, вам необходимо отправить данные в формате json. Пожалуйста, попробуйте использовать это: data: JSON.stringify (данные).
2. Я пробовал это @AlexandruMihai — никакой радости
3. попробуйте добавить значение return false в обработчик кликов или обновите атрибут href на # вместо ‘/upload’
4. Спасибо всем вам за ответы.
Ответ №1:
Попробуйте предотвратить поведение вашей ссылки по умолчанию a
(перенаправление на /upload
) с помощью e.preventDefault()
:
$("#beginUpload").click(function (e) {
e.preventDefault();
//...Your code here
}
Надеюсь, это поможет.
Ответ №2:
Когда вы нажимаете на гиперссылку, вам нужно запретить публикацию, используя что-то вроде:
$("#beginUpload").click(function (e) {
e.preventDefault();
var data = {
mimeType : document.getElementById('file').files[0].type,
fileSize : document.getElementById('file').files[0].size
};
console.log(data);
$.ajax({
type: 'POST',
url: '/post_asset/',
data: data,
dataType: 'json',
success: function (result) {
console.log(result);
},
error: function (error) {
console.log(error);
}
});
});
Или вам нужно вернуть false из обработчика onclick.