使用这段JavaScript
代码,我将post的ID(像数组一样(添加、获取并传递到function.php
文件。
const nonRegister = document.querySelectorAll('.non-register')
nonRegister.forEach(item=>{
item.addEventListener('click', function(){
let postNumber = item.getAttribute('data-post-id');
let myFavoriteArray = JSON.parse(localStorage.getItem("favoriteItems") || "[]");
let retrievedData = localStorage.getItem("favoriteItems");
let retrievedDataArray = JSON.parse(retrievedData);
if(retrievedDataArray !== null && retrievedDataArray.includes(postNumber)){
alert('This model has already been added to favorites')
}else{
myFavoriteArray.push(postNumber);
localStorage.setItem("favoriteItems", JSON.stringify(myFavoriteArray));
let forConversion = JSON.parse(retrievedData);
data = {
'action': 'vicso_non_register',
'forConversion': forConversion,
}
jQuery.ajax({
type:'post',
url: object_url.url,
data: data,
cache: false,
success: function(data){
console.log(data)
}
});
}
})
})
这是我在function.php
文件中的代码。
add_action( 'wp_ajax_nopriv_vicso_non_register', 'vicso_non_register' );
add_action( 'wp_ajax_vicso_non_register', 'vicso_non_register' );
function vicso_non_register(){
$favorite_array = $_POST['forConversion'];
echo $test = json_encode(array('favorite_array'=>$favorite_array));
die;
}
但是,如何获取函数返回的数组呢?例如,我需要一个在fav_models.php
上包含这些数据的PHP数组。
如果有人能提出建议,请帮忙。
以json格式将数据作为ajax响应发送回:
您可以使用wordpress wp_send_json_success
和wp_send_json_error
函数。
add_action( 'wp_ajax_nopriv_vicso_non_register', 'vicso_non_register' );
add_action( 'wp_ajax_vicso_non_register', 'vicso_non_register' );
function vicso_non_register(){
$favorite_array = sanitize_text_field($_POST['forConversion']);
wp_send_json_success($favorite_array);
// or you could send it via "wp_send_json_error", if you need to!
}
在前端,您可以console.log
从function.php
返回的响应。
您可以在文档页面上阅读更多关于这两个函数的信息。
WordPress
wp_send_json_success
函数
WordPress的wp_send_json_error
函数
将数据发送到另一个页面:
有多种方法可以做到这一点,你可以localize your script
,或者我更喜欢以query_var
/query string
的形式发送。
add_action( 'wp_ajax_nopriv_vicso_non_register', 'vicso_non_register' );
add_action( 'wp_ajax_vicso_non_register', 'vicso_non_register' );
function vicso_non_register(){
$favorite_array = sanitize_text_field($_POST['forConversion']);
wp_send_json_success($favorite_array); // send the data back to the ajax call
if(!empty($favorite_array)){
wp_safe_redirect(site_url('/fav_models.php/?favorite='.$favorite_array));
exit;
}
}
然后在";fav_models.php";您可以使用以下方法访问该值:
$new_page_variable = isset($_GET["favorite"]) ? sanitize_text_field($_GET["favorite"]) : ""