javascript - 处理在 Ajax 中更改的多个数据/参数 - Wordpress
问题描述
我正在尝试使用 ajax 过滤名为 podcasts 的自定义帖子类型,使用两个自定义分类 id 作为参数、流派和国家/地区。
这是前端:https ://imgur.com/a/G2vB62q 。
正如你所看到的,我可以选择一个流派或/和一个国家作为我的帖子的过滤器(下面有一个包含传递参数的数组)。
在我的播客页面中,我有两个 foreach,其中带有链接,带有名称和 term_id。
foreach ($genre/$country as $category) {
echo '<a class="button-prova/button-prova2 premuto2"
name="keyword/keyword2" id="keyword/keyword2"
value="'.$category->term_id.'"
href="#">'.$category->name.'</a>';
}
然后,在function.php 中,我有我的ajax 函数和ajax-fetch。
$( document ).ready(function() {
$(document).on("click touchend", ".premuto, .premuto2", function () {
fetch(this);
});
});
function fetch(prova){
if($(prova).attr('name') == 'keyword'){
var1 = $(prova).attr('value') ? jQuery(prova).attr('value') : 0;
} else
{
var2 = $(prova).attr('value') ? jQuery(prova).attr('value') : 0;
}
jQuery.ajax({
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'post',
data: { action: 'data_fetch', keyword: [var1,var2] },
success: function(data) {
jQuery('#datafetch').html( data );
}
});
}
起初,当我选择一种类型时,国家设置为 0,正如您在代码中看到的那样。但是当我选择其他分类法时,类型设置为 0(反之亦然,如图所示)。有办法存储我的上一个选择吗?
解决方案
由于您使用 AJAX。如果您在函数之外声明变量,则先前选择的值将保持不变。试试这个。
var keywords = {};//Put this line outside of the function, so it available globally
$(document).ready(function() {
$('.premuto, .premuto2').on("click", function () {
keywords[$(this).attr('name')] = $(this).attr('value');
fetch();
});
});
function fetch(){
jQuery.ajax({
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'post',
data: { 'action': 'data_fetch', 'keywords': keywords },
success: function(data) {
}
});
}
关键字变量将如下所示:
{keyword:0,keyword2:4}
它将在 PHP 端被读取为关联数组。
附加说明:使用 javascript 全局变量可能会导致其他脚本/插件中的变量名称发生冲突。为了解决这个问题,您可以将所有脚本封装在一个自调用函数中,如下所示:
(function(){
/*PUT YOUR PLUGIN SCRIPTS HERE*/
})();
推荐阅读
- java - “com.teamdev.jxbrowser.chromium.swing.BrowserView”在 netbeans 8.2 中找不到包错误
- electron - 可以使用 Electron 的 spellCheckHandler 来任意标记文本区域中的子字符串吗?
- powerbi - 如何在 power bi 的切片器中拥有实际的日历?
- xcode - Xcode 10.1,尝试创建 iOS 开发证书:“您已经拥有当前的 iOS 开发证书或待处理的证书请求。”
- java - 试图循环到程序的开头
- php - Laravel 为整个项目设置动态配置变量
- locale - 红帽 7 号航站楼的波兰标志
- firebase - 将数据从 Google Cloud 存储桶移到我的 FireBase 存储桶
- python-3.x - 在 docker 容器中找不到环境变量
- java - 有没有办法在解压文件的同时检查当前正在解压的文件?