Загрузка файла плагина формы JQuery с использованием перенаправлений POST в ответ POST
Пожалуйста, помогите, ребята, это главный БЛОКЕР!
У меня есть проект, который использует NodeJS +Плагин jQuery Form + Машинопись, в которой я пытаюсь сделать загрузку файла. После загрузки файла сервер отправляет ответ на сообщение POST, которое отображается на экране. Файл загружается успешно и полностью до того, как ответ POST отобразится на экране. Я ожидаю, что ответ POST вызовет функцию «success» вместо перенаправления страницы для отображения ответа JSON.
Вот код:
$(new ID().setAsRoot().selectId()).append(
"<form id=\"fileUploadForm\" accept-charset=\"utf-8\" method=\"post\" action=\"/upload\" enctype=\"multipart/form-data\">" +
"<input id = \"filename\" type=\"file\" name=\"userfile\" multiple=\"multiple\" />" +
"<button type=\"submit\" id = \"submitButton\"> Upload </button></form>");
var form = $("#fileUploadForm");
form.submit(function (e) {
//e.preventDefault();
this.ajaxSubmit({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize(),
success: function (data) {
var x = JSON.parse(data);
alert("Success : " + x);
},
error: function (data) {
var x = JSON.parse(data);
alert("Error : " + x);
}
});
});
функция успеха не вызывается (что означает, что предупреждающее сообщение не отображается). Данные JSON просто отображаются на экране следующим образом:
{
"path": "data\\cb3409f1cc234ec3f64b60d80be13a3e.html",
"name": "feed.html"
}
На консоли есть ошибка, которая говорит:
Uncaught SyntaxError: Unexpected token : shortcut_manager.js:123
(anonymous function) shortcut_manager.js:123
(anonymous function) extensions::messaging:327
Event.dispatchToListener extensions::event_bindings:386
Event.dispatch_ extensions::event_bindings:371
Event.dispatch extensions::event_bindings:392
dispatchOnMessage
Вот код на стороне сервера, который обрабатывает это. Сервер использует грозный модуль NodeJS.
public upload(req:express.Request, res) {
var form = new formidable.IncomingForm();
var originalFileName:String;
var filePath:String;
form.uploadDir = this.directory;
form.keepExtensions = true;
form.type = 'multipart';
var fields = [];
form
.on("error", function (err) {
})
.on("field", function (field, value) {
})
.on("end", function () {
res.send({
path: filePath,
name: originalFileName
});
})
.on("file", function (name, file:formidable.File) {
originalFileName = file.name;
filePath = file.path;
});
form.parse(req);
return;
}
--Обновить--
Если я сделаю$.ajax
вместоthis.ajax
, Файл не загружается. Консоль браузера показывает ошибку:
XMLHttpRequest cannot load http://localhost/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.