我在主题选项页面中使用了几个 AJAX 请求。之前两者都工作得很好,但现在第一个工作正常,第二个每次都失败 - 在 Firebug 中失败看起来像这样:http://cl.ly/1w5u这是 Webkit 中的:cl.ly/1wYn。我没有得到任何形式的回应。问题是,第一个效果很好。
这是提交的 JS (jQuery):
jQuery('.cropimage').click(function(){
var pid = jQuery('#tump_header_img').val();
var path = jQuery('#header_img_edit .container img').attr('src');
var dimensions = jQuery('#tump_header_img_position').val();
var security = jQuery('#_ajax_nonce_crop_apply_image').val();
jQuery.post(ajaxurl, {pid: pid, action: 'crop_apply_header_image', path: path, dimensions: dimensions, security: security}, function(response) {
console.log(response);
});
});
ajaxurl 是正确的,它与有效的请求中使用的 URL 完全相同。我尝试过剥离所有内容并只是想得到回复,但无济于事。
functions.php 中的好东西:
add_action('wp_ajax_crop_apply_header_image', 'crop_apply_header_image');
function crop_apply_header_image() {
check_ajax_referer('crop_apply_header_image', 'security');
$data = $_POST;
unset($data['security'], $data['action']);
$dimensions = explode(',',$data['dimensions']);
$extension_pos = strrpos($data['path'], '/'); // find position of the last dot, so where the extension starts
$newpath = substr($data['path'], 0, ($extension_pos +1)) . 'cropped-' . substr($data['path'], ($extension_pos + 1));
update_option( 'tump_header_img_path', $newpath );
die( wp_crop_image($data['pid'],$dimensions[0],$dimensions[1],$dimensions[2],$dimensions[3],940,200) );
}
无论如何 - 据我所知,这一切都没有实现。我不知道出了什么问题,非常感谢任何帮助!
最佳答案
如果wp_crop_image
会报错,你会看到吗?有吗enabled debugging ?当您放置 var_dump($data)
时,您看到了什么吗?在那里?
尝试拦截到达您服务器的控制流,地址为 admin-ajax.php
。放置 var_dump
仅在调用您的代码时触发:
if ($_REQUEST['action'] == 'crop_apply_header_image') {
var_dump($_REQUEST);
die();
}
如果您看到此错误,则说明错误发生在 WordPress 代码中的某个位置,但该错误点与处理程序函数之间并没有太多错误。您的操作应该在 default
中的 switch 语句末尾触发。部分:
default :
do_action( 'wp_ajax_' . $_POST['action'] );
die('0');
break;
endswitch;
尝试从 do_action
打印一些内容函数(但仅当 $_REQUEST['action'] == 'crop_apply_header_image'
),然后从那里向下。
如果您设置了 XDebug 或 Zend 调试器(值得花时间和麻烦),您可以单步执行代码,而无需所有这些打印语句。但对于像这样的简单调试,它应该可以工作。
关于php - WordPress admin-ajax.php 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3452279/