После тестирования AjaxFileUpload Plugin Я обнаружил, что он не позволяет мне извлекать $_POST
данные, так как плагин передает только $_FILE
данные.Поэтому я перехожу к плагину jQuery Form, который задокументирован здесь: http://www.malsup.com/jquery/form/#file-upload
К сожалению, я чувствую, что пример плохой и не очень мне помогает.Мне нужно использовать IFrame, чтобы предотвратить перезагрузку страницы.
Есть ли у кого-нибудь работающий код или ссылка на учебники бога с использованием плагина jQuery Form для загрузки файлов с использованием IFrame?
Я знаю тамдругие плагины для загрузки файлов, но я хотел бы использовать этот для этого проекта.
ОБНОВЛЕНИЕ
Это код, который я сейчас использую.Все, что он делает, это перераспределяет страницу, и я не получаю вывод / предупреждения.
HTML
<form id="uploadForm" enctype="multipart/form-data" action="" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<input type="hidden" id="current_path" name="current_path" value="<?php echo $fb->relative_url; ?>" />
<input id="uploadFile" name="uploadFile" type="file" />
<input type="submit" class="button uploadImage" value="<?php _e('Upload File') ?>" /> <br />
</form>
Javascript
var options = {
beforeSubmit: function() { alert('before');},
success: function(html) { alert('success + ' + html);},
data: {current_path: jQuery('#currentPath span').html()},
url: '../wp-content/plugins/wp-filebrowser/uploader.php',
iframe: true,
dataType: 'html'
};
jQuery('#uploadForm').submit(function() {
jQuery(this).ajaxSubmit(options);
return false;
});
Я также пробовал это JS
jQuery('#uploadForm').ajaxForm({
beforeSubmit: function() { alert('before');},
success: function(html) { alert('success + ' + html);},
data: {current_path: jQuery('#currentPath span').html()},
url: '../wp-content/plugins/wp-filebrowser/uploader.php',
dataType: 'html'
});
Но все же моя страница только перезагружается и никакие оповещения не запускаются: (
DEBUG
Запуск следующего сценария в моем файле JS: alert(jQuery('#uploadForm').ajaxForm);
далмне этот вывод:
function (options) {
if (this.length === 0) {
var o = {s: this.selector, c: this.context};
if (!jQuery.isReady && o.s) {
log("DOM not ready, queuing ajaxForm");
jQuery(function () {jQuery(o.s, o.c).ajaxForm(options);});
return this;
}
log("terminating; zero elements found by selector" + (jQuery.isReady ? "" : " (DOM not ready)"));
return this;
}
return this.ajaxFormUnbind().bind("submit.form-plugin", function (e) {if (!e.isDefaultPrevented()) {e.preventDefault();
jQuery(this).ajaxSubmit(options);}}).bind("click.form-plugin", function (e) {var target = e.target;
var jQueryel = jQuery(target);
if (!jQueryel.is(":submit,input:image")) {var t = jQueryel.closest(":submit");
if (t.length == 0) {return;}target = t[0];}var form = this;
form.clk = target;
if (target.type == "image") {if (e.offsetX != undefined) {form.clk_x = e.offsetX;
form.clk_y = e.offsetY;} else if (typeof jQuery.fn.offset == "function") {var offset = jQueryel.offset();
form.clk_x = e.pageX - offset.left;
form.clk_y = e.pageY - offset.top;} else {form.clk_x = e.pageX - target.offsetLeft;form.clk_y = e.pageY - target.offsetTop;}}setTimeout(function () {form.clk = form.clk_x = form.clk_y = null;}, 100);});
}
Из отладки, похоже, что форма не загружается, когда я запускаю этот скрипт. Это странно, потому что у меня это внутри jQuery(document).ready()
.