Sur une de mes pages j'utilise plusieurs formes, chacune contient des données spécifiques (donc il y a une forme avec le prénom de l'utilisateur, nom, etc. il y a un autre avec l'adresse de l'utilisateur et ainsi de suite). Chaque formulaire a un bouton "Enregistrer les modifications" et j'utilise les appels Ajax pour envoyer des données au serveur. Le problème est - sur l'une des formes, l'utilisateur peut télécharger sa photo, en utilisant le téléchargement de fichiers Bootstrap (donc, d'abord, il sélectionne l'image, puis clique sur « Enregistrer » - seulement le fichier envoyer au serveur), mais je ne peux pas trouver un moyen de le faire sans recharger la page.Uploading image sélectionnée sans rafraîchir la page
D'abord, j'ai essayé d'utiliser iframe
caché, mais il semblerait que je ne peux pas faire copier mes données de fichier à l'Iframe, donc c'est un non.
Maintenant, je suis en train d'utiliser ceci:
mais, une fois que je l'inclure dans ma page, Uploader fichier Bootstrap cesse de fonctionner correctement, c'est - à chaque fois que je sélectionne une image automatiquement démarre le téléchargement du fichier. Une partie bizarre est - cela arrive même quand il n'y a pas de code init pour fileuploader, il suffit d'inclure du code. J'ai essayé suggéré « fixe », qui est - j'ai essayé redéfinissant la méthode add comme ceci:
$('#file').fileupload({
dataType: 'json',
add: function (e, data) {
data.context = $('<button/>').text('Upload')
.appendTo(document.body)
.click(function() {
data.context = $('<p/>').text('Uploading...').replaceAll($(this));
data.submit();
});
},
done: function (e, data) {
data.context.text('Upload finished.');
}
});
Mais « ajouter » n'est pas d'être frappé pour une raison quelconque ...
Qu'est-ce que je fais mal ici ? Ou y a-t-il un autre moyen de réaliser ce que je veux?
EDIT 1:
Voici le code que je l'utilise pour l'image téléchargement:
@using (Html.BeginForm("ProfileSavePictureData", "Animator", FormMethod.Post, new { enctype = "multipart/form-data", id = "pictureDataForm" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(null, new { id = "profilePictureDataValidationSummary" })
@Html.HiddenFor(x => x.UserDataId)
@Html.HiddenFor(x => x.UserId)
<div class="form-group">
<div class="fileupload fileupload-new" data-provides="fileupload">
<input type="hidden" value="" name="" />
<div class="fileupload-new thumbnail" style="width: 200px; height: 150px;">
@if (Model == null || String.IsNullOrEmpty(Model.Picture))
{
<img src="http://www.placehold.it/200x150/EFEFEF/AAAAAA&text=no+image" alt="">
}
else
{
<img src="@Model.Picture" alt="@ViewBag.PictureNotAviableLabel" alt="">
@Html.HiddenFor(x => x.Picture)<br />
}
</div>
<div class="fileupload-preview fileupload-exists thumbnail" style="max-width: 200px;
max-height: 150px; line-height: 2px;">
</div>
<div>
<span class="btn default btn-file"><span class="fileupload-new"><i class="fa fa-paper-clip">
</i>
@ViewBag.ChoosePicture
</span><span class="fileupload-exists"><i class="fa fa-undo"></i>
@ViewBag.ChangePicture
</span>
<input type="file" class="default" name="file" />
</span><a href="#" class="btn red fileupload-exists" data-dismiss="fileupload"><i
class="fa fa-trash-o"></i>
@ViewBag.RemovePicture
</a>
</div>
</div>
<span class="label label-danger">
@ViewBag.InfoLabel
</span><span>
@ViewBag.PictureMinatureWarning
</span>
</div>
<div class="margin-top-10">
<button id="btnSaveChengesProfilePictureData" type="button" class="btn btn-default">@ViewBag.SaveChangesButtonLabel</button>
<input type="submit" />
</div>
}
Comme vous pouvez le voir, il y a deux boutons en bas - ni fait ce que je veux ...
peut vous montrer votre code html? ou créer jsfiddle? –
@ TechnoKnol: Il serait difficile de Jsfiddle le mais, s'il vous plaît voir mon edit - J'ai ajouté la partie responsable du téléchargement de l'image. J'espère que cela t'aides. Merci d'avance. – user2384366