Je veux télécharger une vidéo à Bits on the Run en utilisant ajax.Soumettre un formulaire avec ajax
Quand je télécharger une vidéo en affichant une forme, comme ils expliquent ici: http://www.longtailvideo.com/support/bits-on-the-run/15984/upload-videos-within-your-cms
Il fonctionne très bien, mais quand j'essayer d'utiliser jQuery poster ça ne fonctionne pas. Le code que j'utilise pour le poste jQuery est:
<?php
require_once('botr/init_api.php');
# Do the API call to build an upload URL.
# The 'token' MUST be the last parameter for upload progress to work.
$response = $botr_api->call('/videos/create');
$token = $response['link']['query']['token'];
if ($response['status'] == 'error') { die(print_r($response)); }
$url = 'http://'.$response['link']['address'].$response['link']['path'];
# Print the page. All identifiers inside the form are used to display the upload progress.
?>
<script type="text/javascript">
$(document).ready(function() {
$('#uploadForm').submit(function() {
var url = $(this).attr('action');
alert(url);
var dataToBeSent = $(this).serialize();
alert(dataToBeSent);
$.post(url, dataToBeSent, function(data, textStatus) {
//data contains the JSON object
//textStatus contains the status: success, error, etc
alert("textStatus");
alert(textStatus);
}, "json");
return false
});
});
</script>
<form id="uploadForm" action="<?=$url?>" method="POST" enctype="multipart/form-data">
<fieldset>
<label>Select video</label><br>
<input id="uploadFile" type="file" name="file" />
<input id="key" type="hidden" name="key" value="<?=$response['link']['query']['key']?>" />
<input id="api_format" type="hidden" name="api_format" value="json" />
<input id="uploadToken" type="hidden" name="uploadToken" value="<?=$token?>" />
<input id="token" type="hidden" name="token" value="<?=$token?>" />
<div id="uploadBar" style="width:480px; float:left; display:none; background:#FFF; margin:5px 0;">
<div id="uploadProgress" style="background:#46800d; width:0px; height:18px;"></div></div>
<p class="hint">
You can upload any video format (WMV, AVI, MP4, MOV, FLV, ...)
</p>
<button type="submit" id="uploadButton">Upload</button>
</fieldset>
</form>
Quand je soumets la forme l'alerte de l'URL montre http://upload.bitsontherun.com/v1/videos/upload et l'alerte de dataToBeSent montre key = XXX & api_format = JSON & uploadToken = YYY & jeton = YYY
mais rien ne se passe.
Une idée pourquoi?
------------------------------ mise à jour --------------- -------------- J'ai essayé d'utiliser un iframe caché et d'ajouter une cible au formulaire, mais cela ne fonctionne pas, le formulaire est soumis et la page entière est en cours de rafraîchissement. . des idées?
<form id="uploadForm" terget="botr_ifram" action="<?=$url?>" method="POST" enctype="multipart/form-data" >
<fieldset>
<label>Select video</label><br>
<input id="uploadFile" type="file" name="file" />
<input id="uploadToken" type="hidden" name="uploadToken" value="<?=$token?>" />
<div id="uploadBar" style="width:480px; float:left; display:none; background:#FFF; margin:5px 0;">
<div id="uploadProgress" style="background:#46800d; width:0px; height:18px;"></div></div>
<p class="hint">
You can upload any video format (WMV, AVI, MP4, MOV, FLV, ...)
</p>
<button type="submit" id="uploadButton">Upload</button>
</fieldset>
</form>
<iframe width="0" id=”botr_ifram” name="botr_ifram" height="0" border="0" frameborder="0" scrolling="auto" align="center" hspace="0" vspace=""></iframe>
vous ne pouvez pas publier de fichiers via ajax, essayez d'utiliser jquery uploadify plugin ou utilisez un iframe caché qui gère les fichiers postés –