POST admin-ajax 抛出错误 400 - 找不到自定义函数
POST admin-ajax throwing error 400 - not finding custom functions
我正在添加一个单击按钮时应调用的函数,我有一个包含以下 jquery 代码和 ajax 调用的 js 文件:
jQuery(document).ready( function() {
function getUrlParameter(sParam){
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam) {
return sParameterName[1];
}
}
}
jQuery('#upload_btn').click( function(e) {
e.preventDefault();
var flag = true;
var postId = getUrlParameter('preview_id');
var files = jQuery('#file_tool').prop('files');
console.log(files);
var dataS = {
'action': 'upload_button',
'preview_id': postId,
'files': files,
'set': flag
}
jQuery.ajax({
type : 'post',
url : diario.upload,
processData: false,
contentType: false,
data : dataS,
success: function(response) {
if(response.type == "success") {
console.log('jquery works');
} else console.log(response);
}
});
});
});
当我单击按钮时,console.log 显示文件 obj,因此至少 onClick 有效,但紧接着它显示 jquery.js:4 POST custom/wp-admin/admin-ajax.php 400.这就是我的 functions.php 的样子:
add_action( 'wp_enqueue_scripts', 'enqueue_onClick_upload' );
//custom_js_enqueuer
function enqueue_onClick_upload() {
wp_register_script( 'onClick_upload', WP_CONTENT_URL.'/themes/microjobengine/onClick_upload.js', array('jquery') );
wp_localize_script( 'onClick_upload', 'diario', array( 'upload' => admin_url( 'admin-ajax.php' )));
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'onClick_upload' );
}
add_action('wp_ajax_upload_button', 'upload_button');
add_action('wp_ajax_nopriv_upload_button', 'upload_button');
// upload button function
function upload_button() {
$postID = $_POST['preview_id'];
if ($_POST['set']) {
if($_POST['files']['size'] === 0 )
echo "<script>console.log('There's no images.');</script>";
}
$result['type'] = 'success';
echo json_encode($result);
wp_die();
}
不知道为什么找不到action,已经按照wp说的做了,希望大侠帮忙,谢谢。
--编辑--
好的,现在我尝试只传递 'action': 'upload_button'
,错误没有出现,但响应没有成功,我在函数中注释了所有代码并只留下 las 3行,为了 return 成功,但它没有,所以它可能会找到函数,但由于某种原因它没有被执行,当然这意味着当我传递额外数据时发生了错误,关于为什么会发生这种情况有什么想法吗?
抱歉,我没有得到正确的方法来从函数中获得反馈,我只需要删除所有 echo
s 并将我需要的所有内容保存到数组中并返回它 json 编码.
我正在添加一个单击按钮时应调用的函数,我有一个包含以下 jquery 代码和 ajax 调用的 js 文件:
jQuery(document).ready( function() {
function getUrlParameter(sParam){
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam) {
return sParameterName[1];
}
}
}
jQuery('#upload_btn').click( function(e) {
e.preventDefault();
var flag = true;
var postId = getUrlParameter('preview_id');
var files = jQuery('#file_tool').prop('files');
console.log(files);
var dataS = {
'action': 'upload_button',
'preview_id': postId,
'files': files,
'set': flag
}
jQuery.ajax({
type : 'post',
url : diario.upload,
processData: false,
contentType: false,
data : dataS,
success: function(response) {
if(response.type == "success") {
console.log('jquery works');
} else console.log(response);
}
});
});
});
当我单击按钮时,console.log 显示文件 obj,因此至少 onClick 有效,但紧接着它显示 jquery.js:4 POST custom/wp-admin/admin-ajax.php 400.这就是我的 functions.php 的样子:
add_action( 'wp_enqueue_scripts', 'enqueue_onClick_upload' );
//custom_js_enqueuer
function enqueue_onClick_upload() {
wp_register_script( 'onClick_upload', WP_CONTENT_URL.'/themes/microjobengine/onClick_upload.js', array('jquery') );
wp_localize_script( 'onClick_upload', 'diario', array( 'upload' => admin_url( 'admin-ajax.php' )));
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'onClick_upload' );
}
add_action('wp_ajax_upload_button', 'upload_button');
add_action('wp_ajax_nopriv_upload_button', 'upload_button');
// upload button function
function upload_button() {
$postID = $_POST['preview_id'];
if ($_POST['set']) {
if($_POST['files']['size'] === 0 )
echo "<script>console.log('There's no images.');</script>";
}
$result['type'] = 'success';
echo json_encode($result);
wp_die();
}
不知道为什么找不到action,已经按照wp说的做了,希望大侠帮忙,谢谢。
--编辑--
好的,现在我尝试只传递 'action': 'upload_button'
,错误没有出现,但响应没有成功,我在函数中注释了所有代码并只留下 las 3行,为了 return 成功,但它没有,所以它可能会找到函数,但由于某种原因它没有被执行,当然这意味着当我传递额外数据时发生了错误,关于为什么会发生这种情况有什么想法吗?
抱歉,我没有得到正确的方法来从函数中获得反馈,我只需要删除所有 echo
s 并将我需要的所有内容保存到数组中并返回它 json 编码.