3 Stimmen

jQuery File Upload, Angabe von FormData

Ich arbeite daran, das folgende jQuery File Upload Plugin zu verwenden:

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

Ich muss bestimmte zusätzliche FormData, die es sagt, gibt es eine Option für, aber ich bin immer eine JS-Fehler "Uncaught SyntaxError: Unerwarteter Bezeichner" und es gibt keine FormData Beispiele, die es schwer zu bekommen, um zu arbeiten ist.

Hier ist, was ich habe:

$(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 %>')
     }
   ]
    });
});

7voto

mu is too short Punkte 411765

Sie haben die Kommas nicht an den richtigen Stellen in Ihrem formData Ich glaube, Sie wollen, dass es so ist:

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 %>')  
    }
]

Beachten Sie die Kommas nach den name: ... Teile, aber nicht die value: ... Teile.

Außerdem glaube ich nicht, dass encodeURIComponent() ist hier der geeignete Escape-/Codierungsmechanismus und <%= u ... bereits URI kodiert. Alles, was Sie tun müssen, ist sicherzustellen, dass die Zeichenfolge nicht ein unescaped einfaches Anführungszeichen enthält, so dass etwas mehr wie dies wahrscheinlich funktionieren würde (vorausgesetzt, dass dieses JavaScript durch ERB geht):

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

Die entsprechende Kodierung sollte vom Plugin gehandhabt werden, und es handelt sich mit ziemlicher Sicherheit ohnehin um einen POST, so dass die URL-Kodierung gar nicht erforderlich ist.

Außerdem brauchen Sie keine Schrägstriche in JavaScript-Zeichenfolgen zu entkommen, sie sind nicht besonders, so dass Sie einfach sagen können '</td>' wo Sie sagen '<\/td>' .

Ich weiß nichts über jQuery-File-Upload, aber die Behebung Ihrer Kommas sollte Sie zumindest über Ihr unmittelbares Problem hinwegbringen (und zu neuen und interessanteren Problemen führen!).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X