这是我的ajax功能
$('#rq-page-one-next').one('click', function(e){
e.preventDefault();
e.stopPropagation();
$('.form-crumb li').removeClass('active');
$('.form-crumb li').eq(1).addClass('active');
$('#rq-page-one-next').css('display', 'none');
$('#page-2').removeClass("smallheight");
var myForm = document.getElementById('form-horizontal');
formdatainfo = new FormData(myForm);
$.ajax({
type: "POST",
url: myAjax.ajaxurl,
data: formdatainfo,
cache: false,
contentType: false,
processData: false,
success: function(){
navigateToPage();
console.log("success");
if( /Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
$("html, body").animate({ scrollTop: $('#quote-container').offset().top - 60 }, 300);
}
},
error: function(e) {
console.log('fail');
},
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
if (myXhr.upload) {
myXhr.upload.addEventListener('progress', function(e) {
if (e.lengthComputable) {
$('progress, #progress, #qq_progress, #progress_small').css("display", "");
$('progress, #progress, #qq_progress, #progress_small').css("display", "block");
$('progress').attr({
value: e.loaded,
max: e.total,
});
perce = Math.round((e.loaded/e.total)*100);
$('#progress').html(perce+"%");
}
} , false);
}
return myXhr;
}
});
return false;
});
目前我在WP中的add_action函数缩短为:
add_action('wp_ajax_nopriv_submit_image', 'submitimage', 999);
add_action('wp_ajax_submit_image', 'submitimage', 999);
function submitimage() {
write_log('submit image started');
write_log($_POST);
write_log($_FILES);
}
我的表单已设置entype,并定义了操作。大约90%的时间,一切运行良好。 Submitimage函数在debug.log中注销其所需的所有内容。 10%的时间不记录任何内容。我唯一注意到的是它失败时以及失败时都没有,在admin-ajax收到200响应之前,有一个admin-ajax.php 302重定向。当它工作时,我不会得到此重定向。重定向将丢失所有已发布的内容。我不知道是什么原因造成的或如何阻止它。我找不到任何阻止用户如果未登录就无法访问admin-ajax的东西。大约4秒钟后,似乎获得了重定向,如果加载速度比那快,那么我就无法获得重定向。>
这是可行的: Network img
这是行不通的,302是帖子,然后200是get: Network img with redirect