使用AJAX和jQuery实现POST值

时间:2020-05-24 作者:Iggy\'s Pop

以下是如何在wp表单中创建自定义智能标记:

function ea_custom_smart_tags( $content, $tag ) {
    if( \'my_smart_tag\' == $tag ) {
        $value = \'Testing 1 2 3\';
        $content = str_replace( \'{\' . $tag . \'}\', $value, $content );
    }
    return $content;
}
add_filter( \'wpforms_smart_tag_process\', \'ea_custom_smart_tags\', 10, 2 );
我想通过ajax发布一个值,而不是硬编码。

我的jQuery/ajax:

jQuery.ajax({
    type: \'POST\',
    url: \'http://localhost:8888/mywebsite/wp-admin/admin-ajax.php\',
    data: {
        action: \'my_action\',
        theTotal: newTotal
    },
}).success(function (result) {
    alert(result);
});
我的functions.php:

function my_action_callback($content, $tag){


if ( \'total\' === $tag ) {

 $total = $_POST[\'theTotal\'];

 $content = str_replace( \'{total}\', $total, $content );

}

return $content;
}
add_action( \'wp_ajax_my_action\', \'my_action_callback\' );
add_filter( \'wpforms_smart_tag_process\', \'my_action_callback\', 10, 2 );
但这给了我一个错误:

Uncaught ArgumentCountError:参数太少,无法执行my\\u action\\u callback(),传入了1个,需要正好2个

1 个回复
SO网友:cjbj

这个错误是不言而喻的。您的最后一行是:

add_action( \'wp_ajax_my_action\', \'my_action_callback\' );
add_filter( \'wpforms_smart_tag_process\', \'my_action_callback\', 10, 2 );
该操作正在调用与筛选器相同的函数。但是过滤器传递两个变量,而操作只传递一个。函数本身需要两个变量:

function my_action_callback($content, $tag)
因此,如果通过(ajax)操作调用该函数,就会出现此错误。你必须通过$tag 也可以通过ajax调用。否则my_action_callback 无论如何都不会做任何事,因为它要求$tag 未来\'total\'. 或者你可以放弃$tag 作为一个变量,因为它并没有做很多事情。

更新:您还可以PHP 在函数调用中添加默认值会更宽容一些:

my_action_callback($content=\'\', $tag=\'\')

相关推荐

WooCommerce多站点全球搜索如何实现mod ajax功能?

我创建了一个多站点电子商务装置,以区分男性和女性部门。然而,经常发生的情况是,在男性部门,他们做与女性文章相关的研究,反之亦然。因此,我的网站说它找不到文章,显然不是这样。如何实现全局搜索功能?我尝试在粘贴的这个功能上使用switch\\u to\\u blog,但遗憾的是我无法使用它。谁能帮帮我吗?这是我尝试的代码。。。但它是否停止并仅在站点1上工作。。。有什么想法吗?提前感谢 switch_to_blog(1); $results = new WP_Query( apply_filte