J'utilise la bibliothèque jQuery File Upload ( http://github.com/blueimp/jQuery-File-Upload ), et je suis restée coincée à chercher comment utiliser la bibliothèque pour satisfaire les conditions suivantes.
Voici jsFiddle, il a un comportement bizarre jusqu'à présent, car il envoie deux fois la demande de publication et le premier est annulé.
Maintenant, grâce au commentaire de @CBroe, le problème de l'envoi de la demande deux fois est résolu. Cependant, le paramètre key du paramètre request n'est pas correctement défini. Voici la version mise à jour de jsFiddle.
La partie principale du code js ressemble à ceci.
$(document).ready(function(){
var filesList = []
var elem = $("form")
file_upload = elem.fileupload({
formData:{extra:1},
autoUpload: false,
fileInput: $("input:file"),
}).on("fileuploadadd", function(e, data){
filesList.Push(data.files[0])
});
$("button").click(function(){
file_upload.fileupload('send', {files:filesList} )
})
})
Quelqu'un a une idée de comment faire fonctionner ça?
Résolu.
Fiddle: http://jsfiddle.net/BAQtG/29/
Et js code
$(document).ready(function(){
var filesList = [],
paramNames = [],
elem = $("form");
file_upload = elem.fileupload({
formData:{extra:1},
autoUpload: false,
fileInput: $("input:file"),
}).on("fileuploadadd", function(e, data){
filesList.Push(data.files[0]);
paramNames.Push(e.delegatedEvent.target.name);
});
$("button").click(function(e){
e.preventDefault();
file_upload.fileupload('send', {files:filesList, paramName: paramNames});
})
})
La première demande POST déclenchée par votre script est annulée, car le bouton soumet le formulaire (provoquant la seconde demande POST).
Utilisez type="button"
sur la button
si vous _ {ne pas} voulez que la fonctionnalité d'envoi soit disponible.
Vous devez soit ajouter un return false;
, comme indiqué ci-dessous:
$("button").click(function(){
file_upload.fileupload('send', {files:filesList} )
return false;
})
ou spécifiez l'attribut type="button"
:
<button type="button">send by fileupload send api</button>
Afin de définir la formData
, utilisez ce qui suit:
$("button").click(function () {
file_upload.fileupload('send', {
files: filesList,
formData: {
json: JSON.encode({
extra: 1
})
}
})
})
Spécifiquement pour JSFiddle , si vous voulez obtenir la valeur extra
dans la réponse, vous devez l'encoder et l'assigner à une propriété nommée json
.
Ici est un exemple de travail.