【发布时间】:2010-08-10 18:44:12
【问题描述】:
我在主题选项页面中使用了几个 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_ajax_crop_apply_header_image操作? -
我的术语在这里并不完美,但基本上是这样:jQuery.post(ajaxurl, {pid: pid, action: 'crop_apply_header_image'... 在 wp-ajax.php 中, add_action() 查找由 wp_ajax_ 预先设置的操作。有意义吗?这就是我了解到它的工作方式以及它在我的其他调用中成功工作的方式。