1

使用这段JavaScript代码,我添加、获取帖子的 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;
}

但是我怎样才能得到函数返回的数组呢?例如,我需要一个包含这些数据的 PHP 数组fav_models.php

如果有人可以建议,请帮助。

4

1 回答 1

1

以 json 格式将数据作为 ajax 响应发送回

您可以使用 wordpresswp_send_json_successwp_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.logfunction.php.

您可以在文档页面上阅读有关这两个功能的更多信息。

WordPresswp_send_json_success功能
WordPresswp_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"]) : ""  
于 2021-04-29T19:33:18.583 回答