2011-01-24 3 views
3

Я работаю с помощью следующей JQuery файла Загрузить плагин:JQuery загрузка файла, указав FormData

https://github.com/blueimp/jQuery-File-Upload/wiki/Options 

Мне нужен конкретные дополнительные данные формы, которые он говорит, что есть возможность для, но я получаю Ошибка JS «Uncaught SyntaxError: Неожиданный идентификатор», и нет примеров FormData, что затрудняет работу.

Вот что у меня есть:

$(function() { 
    $('.upload').fileUploadUI({ 
     uploadTable: $('.upload_files'), 
     downloadTable: $('.download_files'), 
     buildUploadRow: function (files, index) { 
      var file = files[index]; 
      return $(
       '<tr>' + 
       '<td>' + file.name + '<\/td>' + 
       '<td class="file_upload_progress"><div><\/div><\/td>' + 
       '<td class="file_upload_cancel">' + 
       '<div class="ui-state-default ui-corner-all ui-state-hover" title="Cancel">' + 
       '<span class="ui-icon ui-icon-cancel">Cancel<\/span>' + 
       '<\/div>' + 
       '<\/td>' + 
       '<\/tr>' 
      ); 
     }, 
     buildDownloadRow: function (file) { 
      return $(
       '<tr><td>' + file.name + ' ' + file.type + ' ' + file.size + '<\/td><\/tr>' 
      ); 
     }, 
    formData: 
    [ 
    { 
     name: '_http_accept' 
     value: 'application/javascript' 
    }, 
    { 
     name: '<%= session_key_name %>' 
     value: encodeURIComponent('<%= u cookies[session_key_name] %>'), 
    }, 
    { 
     name: 'authenticity_token' 
     value: encodeURIComponent('<%= u form_authenticity_token %>') 
    } 
    ] 
    }); 
}); 

ответ

7

Вы не запятые в нужных местах в вашем formData, я думаю, что вы хотите, чтобы это было так:

formData: [ 
    { 
     name: '_http_accept', 
     value: 'application/javascript' 
    }, { 
     name: '<%= session_key_name %>', 
     value: encodeURIComponent('<%= u cookies[session_key_name] %>')  
    }, { 
     name: 'authenticity_token', 
     value: encodeURIComponent('<%= u form_authenticity_token %>') 
    } 
] 

Обратите внимание, что есть запятые после name: ... частей, но не value: ... частей.

Кроме того, я не думаю, что encodeURIComponent() является подходящим механизмом экранирования/кодирования здесь и <%= u ... уже кодирует URI. Все, что вам нужно сделать, это убедиться, что строка не содержит неэкранированные одиночные кавычки, так что-то больше, как это будет, вероятно, работать (при условии, что этот JavaScript проходит через Еврорадио):

value: '<%= cookies[session_key_name].gsub(/'/, "\'") %>' 

Соответствующее кодирование должно быть обработано по плагину, и это почти наверняка делает POST, так что кодировка URL-адресов даже не применяется.

Кроме того, вам не нужно избегать косой черты в строках JavaScript, они не являются специальными, поэтому вы можете просто сказать '</td>', где вы говорите '<\/td>'.

Я ничего не знаю о загрузке jQuery-File, но исправление запятых должно по крайней мере дать вам простую проблему (и на новые и более интересные проблемы!).

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