Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress admin-ajax.php失败_Php_Jquery_Wordpress - Fatal编程技术网

Wordpress admin-ajax.php失败

Wordpress admin-ajax.php失败,php,jquery,wordpress,Php,Jquery,Wordpress,我在主题选项页面中使用了几个AJAX请求。这两种方法以前都工作得很好,但现在第一种方法可以工作,第二种方法每次都会失败——失败在Firebug:中看起来像这样,在Webkit:cl.ly/1wYn中就是这样。我没有得到任何回应。问题是,第一个很好用 以下是提交的JS(jQuery): jQuery('.cropimage').click(function(){ var pid = jQuery('#tump_header_img').val(); var path = jQuery('#he

我在主题选项页面中使用了几个AJAX请求。这两种方法以前都工作得很好,但现在第一种方法可以工作,第二种方法每次都会失败——失败在Firebug:中看起来像这样,在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\u crop\u image
会给出错误,您会看到吗?有你?当您在那里放置
var\u dump($data)
时,是否看到了什么

admin ajax.php
上,尝试拦截到达服务器的控制流。放置一个
var_dump
,该转储仅在调用代码时触发:

if ($_REQUEST['action'] == 'crop_apply_header_image') {
   var_dump($_REQUEST);
   die();
}
如果您看到这一点,那么错误发生在WordPress代码的某个地方,但是在这一点和处理函数之间没有太多错误。您的操作应在switch语句末尾的
default
部分触发:

default :
    do_action( 'wp_ajax_' . $_POST['action'] );
    die('0');
    break;
endswitch;
尝试从
do\u action
功能中打印一些内容(但仅当
$\u REQUEST['action']==“crop\u apply\u header\u image”
时),然后从那里开始打印


如果您已经设置了XDebug或Zend调试器(值得花费时间和麻烦),那么您可以在不使用所有这些打印语句的情况下单步执行代码。但是对于这样一个简单的调试,它应该可以工作。

是什么触发了
wp\u ajax\u crop\u apply\u header\u image
操作?我的术语在这里并不完美,但基本上是这样的:jQuery.post(ajaxurl,{pid:pid,action:'crop\u apply\u header\u image'…在wp-ajax.php中,add\u action()查找由wp_ajax_389;预先编写的操作。有什么意义吗?这就是我了解到它的工作方式,也是它成功用于我的另一个调用的方式。我尝试用var_dump、simple echos、return(“hello world”)替换该函数的内容,等等。我不能让这个函数做任何事情,所以这告诉我它是介于jQuery请求和functions.php之间的-这是admin ajax.php。我添加了一些关于调试的建议,也许你已经尝试了所有这些?删除
check\u admin\u referer()
打电话,看看是否有响应-如果有,那就是当前值的问题:pI进行了更多的调试。编辑admin-ajax.php是一个好主意,所以我在那里尝试了很多方法-包括注释整个文件并用var_转储文件替换。没有。请求显然从未到达admin-ajax.php,这是一个非常有用的方法t让我感到困惑。第一个请求是如何完成的?它归结为一个页面上的两个请求或一个JS文件中的两个请求不起作用,我不知道为什么,但这是第一个请求(起作用):jQuery.post(ajaxurl,{pid:pid,action:'get_large_attachment',security:security},function(response){…所以,如果我复制它并将其放置在第二个请求所在的位置,使其完全相同,它仍然会失败,没有任何错误消息或提示。这可能与Apache有关吗?我在admin-ajax.php上尝试了CHMOD 777。