2013-02-19 2 views
2

Я пытаюсь использовать эти 2 плагина jQuery: plupload и jQuery Form Plugin ajaxForm.Невозможно опубликовать данные с помощью jQuery Form Plugin ajaxForm

Он отлично работает, за исключением одного: я не могу отправить file.name (с ajaxForm) файла, ранее измененного с помощью plupload.

Я объясняю немного: пользователь отправляет файл с помощью plupload. Файл разложен. Он работает нормально.

Затем пользователь отправляет форму с помощью ajaxForm и отправляет формы datas + имя файла с помощью метода post.

Я знаю, как отправить данные с ajaxform, этот код работает отлично:

var value1 = "dynamic_value1"; 
$('#my_form').ajaxForm({ 
     // datas is sent in post method, it works fine 
     data: { value1: value1 }, 
     beforeSubmit: validate, 
      success: function() { 
      // it's ok : 
      //alert(value1); 
     } 
    }); 

Но я не могу сделать это с pluplopad file.name, я могу видеть имя файла, если я сделал предупреждение, но Я не могу отправить его:

Код для загрузки имени файла (он работает): var file_name_vous;

uploader.bind('FileUploaded', function(up, file, response) { 

      // It's ok : i can get file name, alert show me the file name 
      file_name_vous = encodeURIComponent(file.name); 
      alert(file_name_vous); 
     //}; 
    }); 
}); 

Но я не могу это сделать, этот код не работает:

$participer_form.ajaxForm({ 
     type: 'POST', 
     data: { 
     // impossible to send this var 
     file_name_vous: file_name_vous 
     }, 
     beforeSubmit: validate, 

      // success 
      success: function() { 
       // It's ok, alert shows the file name 
       alert(file_name_vous);  
     } 
    }); 

Так что я не понимаю, я могу отправить с методом ДАННЫЕ пост, я это проверял , Но я не могу отправить этот конкретный var: file_name_vous = encodeURIComponent (file.name);

Знаете ли вы, есть ли что-то, что я должен сделать с (file.name), прежде чем пытаться отправить его методом post?

У меня нет ошибки, просто в сетях firebug/XHR, я ничего не вижу об этом var. Если я заменил этот var на var value1 = "dynamic_value1", он будет работать. так что я думаю, моя проблема в этом partuliar var file.name

+2

Почему вы используете plupload ??? Плагин поддержки Malsups Ajax Form, поддерживающий загрузку через AJAX Infact, поддерживает его наилучшим образом, он создает данные, которые браузер строит, когда он отправляет форму с загрузкой файлов в них, вам не нужен другой, если вы хотите, чтобы ваш загружает im sure плагин AJAX Form имеет поддержку этого –

+0

в отношении моего последнего комментария, о загрузке файла через форму ajax, см. этот вопрос http://stackoverflow.com/questions/9883564/get-form-id-using-jquery-plugin -ajaxform-and-upload-progress-bar –

+0

Я думаю, что 'file_name_vous' заполняет значения после представления. – Ravi

ответ

1

Возможно, вам следует оставить часть данных вашей формы ajax и просто создать скрытое поле при успешной загрузке, которое будет отправлено с вашей формой.

Что-то вроде этого:

uploader.bind('FileUploaded', function(up, file, response) { 

      // It's ok : i can get file name, alert show me the file name 
      file_name_vous = encodeURIComponent(file.name); 
      // maybe you'll have to check if hidden filed already exists 
      $participer_form.Append($('<input type="hidden" value="'+file_name_vous+'" id="file_name_vous" name="file_name_vous"/>')); 
     //}; 

Надеется, что это поможет

Кстати, вы пробовали это, чтобы установить значение как можно позже?

uploader.bind('FileUploaded', function(up, file, response) { 

      // It's ok : i can get file name, alert show me the file name 
      file_name_vous = encodeURIComponent(file.name); 
    $participer_form.ajaxForm({ 
      type: 'POST', 
      data: { 
      // impossible to send this var 
      file_name_vous: file_name_vous 
      }, 
      beforeSubmit: validate, 

       // success 
       success: function() { 
        // It's ok, alert shows the file name 
        alert(file_name_vous);  
      } 
     }); 
    }); 
+0

Спасибо, Это именно то, что я сделал: file_name = encodeURIComponent (file.name); $ ('# Вход имя_файла') Вал (имя_файла). Это показывает, что проблема связана с ajaxForm, потому что в этом случае нет проблемы с file.name –

+0

@ SébastienGicquel, возможно, вы можете попробовать установить значение позже в этом процессе. Добавил еще один вариант моего ответа – jbl

+0

Спасибо большое, он работает! Я потратил пару часов на это, и, наконец, это была логическая проблема. –

Смежные вопросы