AJAX调用不适用于此自定义代码

时间:2012-09-18 作者:webmasters

我有一个ajax调用,它获取catname的值:

jQuery(\'.bio a\').click( function(){
    var catname = $(this).closest(".bio").data(\'category\');
        alert(catname);
    jQuery.ajax({  
    cache: false,
        type: \'POST\', 
        url: \'http://www.mysite.com/wp-admin/admin-ajax.php\',  
        data: {  
            action: \'performers\',
            catname: catname
            /*nonce: nonce,*/
        }
    });  
});
我有一个更新自定义字段的函数:

function performers(){  
    $test = $_POST[\'catname\'];  
    return $test;
    }  
add_action(\'wp_ajax_nopriv_ performers\', \'performers\');  
add_action(\'wp_ajax_performers\', \'performers\');  
我在single中使用$test变量。php

问题:

你知道为什么这个代码不起作用吗?jquery var catname is being set (使用警报对此进行了测试)。也许这与缓存有关?我确实尝试用$test变量更新一个自定义字段,并在single中检索该自定义字段的值。php,仍然没有运气。

我看了一个使用nonce的教程?你建议我用它吗?怎样

我尝试过这个,但仍然没有运气(称为performers();单件。php以使其正常工作。

function performers(){  
        $test = $_POST[\'catname\'];
        update_post_meta(758, \'perfx\', $test);
    }  
    add_action(\'wp_ajax_nopriv_performers\', \'performers\');  
    add_action(\'wp_ajax_performers\', \'performers\');  

1 个回复
SO网友:jhussey

而不是执行以下操作:

data: {action: \'performers\', catname: catname}
尝试:

data: \'action=performers&catname=\'+catname;
您可能还想全局定义“catname”,我不确定您的ajax处理程序是否存在范围问题,但这可能就是为什么没有设置范围的原因。例如,尝试在cache=false上方的ajax处理程序中警告catname;如果未引发警报,则不会设置catname。

您可以使用控制台,而不是使用可能变得单调乏味的警报。记录(catname)并查看控制台中的值。

关于将nonce用于安全性e.t.c,我帮不了你,我确信有太多的文章解释了它的用法。谷歌it。查看wordpress codex至。

希望这有帮助。

结束

相关推荐

存储/缓存AJAX发送的数据以避免重复请求

我开发了一个小部件,它提供了一个完整的归档搜索工具,用户可以在其中选择各种选项,这些选项加入到一个对象中,通过ajax操作传递给WP\\U查询,该操作通过JSON返回结果数据。10个结果被发送回页面,因此需要分页。每次翻页时都会发送一个新请求。更多here.我的问题是:为了减少请求负载,我希望如果在翻页后调用该操作,则不会发送有关查询的信息,而只发送更改页面顺序。为了实现这一点,我假设解决方案是存储已经发送的查询。怎么可能做到这一点?谢谢