WordPress API函数在AJAX函数上不起作用。php调用

时间:2015-04-08 作者:Cumatru Cosu

我试图使用AJAX在WordPress中显示类别的子类别:当我选择一个主类别时,会调用WP AJAX,结果用于显示子类别。

到目前为止,我有一个客户端代码,在不调用WP函数时可以运行(此代码位于主题页中):

jQuery(\'#cat-location-main\').change(function () {
    var optionSelected = jQuery(this).find(\'option:selected\');
    var valueSelected = optionSelected.val();
    var textSelected = optionSelected.text();
    console.log(valueSelected);
    jQuery.ajax({
      type: \'POST\',
      url: ajaxurl,
      data: {
            action: \'myajax-get-subcat\',
            category: valueSelected,
            // send the nonce along with the request
            categoryNonce: \'<?php echo wp_create_nonce( \'myajax-get-subcat-nonce\' );?>\'
      },
      success: function(data, textStatus, jjqXHR) {
          console.log(data);
      },
      dataType: \'json\'
    });
 });
我在函数中有这个。php:

add_action(\'wp_ajax_myajax-get-subcat\', \'myajax_get_subcat\');

function myajax_get_subcat() {
    $nonce = $_POST[\'categoryNonce\'];
    $main_category = $_POST[\'category\'];

    if (!wp_verify_nonce($nonce, \'myajax-get-subcat-nonce\'))
        die ( \'Busted!\');

    if(function_exists(\'wp_dropdown_categories\')==true) {
        echo \'true\';
    } else {
        echo \'false\';
    }
    wp_dropdown_categories(\'taxonomy=category&selected=1&echo=1&orderby=NAME&order=ASC&hide_empty=0&hide_empty=0&hierarchical=1&depth=1&id=cat-location-secondary&child_of=\'.$main_category);  
    exit;
}
现在我在客户端发表评论时得到了一个“true”wp_dropdown_categories 行,当我取消注释该行时,我什么也得不到(PHP崩溃)。php错误日志中没有任何内容(WAMP设置)。

而且,即使我添加require_once(__DIR__.\'/../../../wp-load.php\'); 但如果我在浏览器中使用GET(用于functions.php),它就可以工作。任何帮助都将不胜感激!

2 个回复
SO网友:Mark Kaplun

您的问题可能是因为您没有返回json对象,而是返回html(实际上是文本和html的混合),并且您设置jQuery来验证响应是否为json,而不是json。

ajax处理程序中的代码应该是

$catshtml = wp_dropdown_categories(.....echo=0);
$ret = array(\'data\' => $catshtml);
wp_send_json($ret);
die();
在浏览器端,您需要查找从服务器接收的json元素的数据属性的内容。

调试提示:在开始依赖控制台日志之前,请先查看浏览器开发人员工具部分中作为响应实际传输的内容。

SO网友:strattonn

当我从Ajax调用中似乎什么也得不到时,我运行Fiddler并检查请求的返回。

前几天,一个Ajax调用莫名其妙地失败了。在检查返回时,我看到另一个程序员在我收到响应之前正在将一个数组转储到输出中。我从来没有想到这一点,因为JavaScript从未达到我设置的断点。

结束

相关推荐

如何在WordPress帖子中运行AJAX?

我试图在WordPress中使用ajax。我在单个会议中有两个组合框。php第二个组合框值基于第一个组合框中的选择这是我的single-meetings.php<form action=\"#\" name=\"form\" id=\"form\" method=\"post\"> <div id=\"check-in-date-wrap\"> <select name=\"search_category\" id=\"check-in-date\">