如何在 Wordpress 中使用 Ajax 将 Javascript 对象传递给 PHP

Posted

技术标签:

【中文标题】如何在 Wordpress 中使用 Ajax 将 Javascript 对象传递给 PHP【英文标题】:How to pass Javascript Object to PHP with Ajax in Wordpress 【发布时间】:2021-10-30 11:33:56 【问题描述】:

下面的代码返回 0,而不是对象。缺少什么以便我可以使用 php 文件中的金额值?

JS

jQuery(document).ready(function ($) 

   var whatever = 
     amount: 1234,
   ;
   whatever = JSON.stringify(whatever);
  var data = 
    action: "my_action",
    whatever: whatever,
  ;

  // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
  jQuery.post(ajaxurl, data, function (response) 
    alert("Got this from the server: " + response);
  );
);

PHP

function my_action()

    global $wpdb; // this is how you get access to the database

    $whatever = intval($_POST['whatever']);
    $whatever = json_decode($whatever);

    // $whatever += 10;

    echo $whatever;

    wp_die(); // this is required to terminate immediately and return a proper response


【问题讨论】:

您正试图通过执行$whatever = intval($_POST['whatever']);whatever amount: 1234 转换为整数。您应该先使用$whatever = json_decode($_POST['whatever']);,然后获取$whatever["amount"] 的值并使用$whatever = intval($whatever["amount"]) 将其转换为整数 谢谢。我实际上不需要intval(),我想访问PHP 中的对象。不过,根据您的建议,它会返回 NULL 如果我在 json_decode() 之前回显 $whatever,它会返回字符串 \"amount\":1234。 json_decode() 之后变成null. 【参考方案1】:

你的 PHP 有问题,试试这个:

function my_action()

    global $wpdb; // this is how you get access to the database

    $whatever = $_POST['whatever'];
    $whatever = json_decode($whatever);
    $amount = intval($whatever['amount']); 

    echo $amount;

    wp_die(); 

【讨论】:

谢谢。我实际上不需要intval(),我想访问 PHP 中的对象。不过,根据您的建议,它会返回 NULL 如果我在 json_decode() 之前回显 $whatever,它会返回字符串 \"amount\":1234。 json_decode() 之后变成null.

以上是关于如何在 Wordpress 中使用 Ajax 将 Javascript 对象传递给 PHP的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ajax 调用中使用 wordpress 函数

Wordpress 使用 Wordpress 将 ajax 值传递到特定页面

使用 AJAX 将 Wordpress 帖子内容加载到 DIV

如何在 WordPress 简码中使用 AJAX?

javascript 示例说明如何在WordPress中使用AJAX

javascript 示例说明如何在WordPress中使用AJAX