На моей странице у меня есть сценарий ajax, который содержит цепочку вызовов ajax, вложенных в функцию успеха друг друга, чтобы выполнялся следующий. Например -
$.ajax({
data: {
action: 'polly_pros',
pollytext: text
},
type: 'post',
url: polpro.ajax_url,
cache: false,
success: function(data) {
$('#player')[0].pause();
$('#player')[0].load();
var aud_dur = $('#aud_dur').val();
// NEXT AJAX CALL
$.ajax({
data: {
В моей форме мой скрытый ввод -
<input type="hidden" name="aud_dur" id="aud_dur" value="" />
На своей странице, чтобы обновлять скрытый ввод аудиофайла при его загрузке, я использую -
var Aud = $('#player');
var aud_dur = $('#aud_dur');
Aud[0].addEventListener('loadeddata', function() {
aud_dur.val($('#player')[0].duration);
});
В моем php-скрипте я пытаюсь получить значение следующим образом -
$aud_dur = $_POST['aud_dur'];
Мой скрытый ввод обновляется в моей форме, но новое значение не отправляется обратно, поэтому я могу использовать его при следующем вызове ajax. В данный момент данные, похоже, не передаются из переменной.
Есть предложения?
EDIT
В моем коде ajax есть несколько вызовов, которые выполняются после успешного выполнения предыдущего.
ajax-вызов polly_pros создает аудиофайл, и следующий ajax-вызов предполагает получить оттуда длительность аудио, которую я также вводю в скрытый ввод.
Я могу получить длительность, если файл уже существует, но при создании файла динамически (как мне нужно сделать), я не могу получить значение продолжительности.
Это мой полный AJAX-код (несвязанные переменные удалены для упрощения) ---
jQuery(document).on('click', '#make-vid', function(e) {
e.preventDefault();
var aud_dur;
var pollytext = $('#pollytext').val();
var path = $('#path').val();
var post_id = $('#post_id').val();
// AJAX CALL
$.ajax({
url: vformpro.ajax_url,
data: {
action: 'vform_pros',
post_id: post_id,
},
type: 'POST',
success: function(data) {
console.log(data);
var audio = $("#player");
var post_id = $("#post_id").val();
var aud_dur = $("#aud_dur").val();
var tune_dur = $("#tune_dur").val();
// AJAX CALL
$.ajax({
data: {
action: 'polly_pros',
post_id: post_id
},
type: 'post',
url: polpro.ajax_url,
cache: false,
success: function(data) {
console.log(data);
$('#player')[0].pause();
$('#player')[0].load(function() {
// HERE I AM TRYING TO GET THE AUDIO DURATION UPON SUCCESS OF THIS AJAX CALL SO // THAT I CAN PASS IT TO THE FOLLOWING AJAX CALL
var Aud = $('#player');
var aud_dur = $('#aud_dur');
Aud[0].addEventListener('loadeddata', function() {
aud_dur.val($('#player')[0].duration);
console.log(aud_dur);
});
});
// AJAX CALL
$.ajax({
data: {
action: 'mvid_pros',
post_id: post_id,
aud_dur: aud_dur,
tune_dur: tune_dur
},
type: 'post',
url: mvidpro.ajax_url,
cache: false,
success: function(data) {
console.log(data);
$("#video-preview")[0].pause();
$("#video-preview")[0].load();
},
error: function() {
$('.load-text').text('Error on making Video.');
}
});
},
error: function(data) {
console.log(data);
},
});
}
});
});
UPDATE
Вот ссылка на полный код (WIP), чтобы лучше понять мой вопрос.