繁体   English   中英

使用 Php,我如何访问 Java 脚本 Object 我已经通过 Z3EB7106C3477A9CFDE16

[英]Using Php, how can I access a Java Script Object I've passed by Ajax

因此,如上所述,我将访问(使用 PHP)我使用 JS 创建的 object,然后使用 Ajax 传递给.php。 我听说过 json,它很有用,或者没有它我可以工作吗?
我正在链接我的代码:

    var data = {
     v_Post: document.getElementById("v_Post").value,
     x: document.getElementById("x").value,
     y: document.getElementById("y").value,

      }

    $.ajax({
      type: "POST",
      url: "http://localhost:80/mySite.it/scripts/script.php",
      data: "data=" + data,
      dataType: "html",
      success: function(v) {
        alert("Chiamata riuscita!!!");
          },
      error: function(){
        alert("Chiamata fallita!!!");
      }
    });
  });
});

我尝试在 php 中执行此操作,但它似乎不起作用:

   $data = $_POST['data'];
   echo '<script>console.log($data.v_Post); </script>';
   echo $data.v_Post;

data是 object,您将其转换为字符串( "[object Object]" ),因此实际数据在发送到 PHP 之前会丢失。

只需将 jQuery 传递给 object 本身,而不将其转换为字符串:

data: data,

然后 jQuery 将使用标准格式 Url 编码, PHP 将自动解码并用于填充$_POST

<?php
    header("Content-Type: text/plain");
    echo $_POST['v_Post'];
?>

然后它将在 JS 中可用:

success: function(response_data) {
     alert(response_data);
},

如果您检查,则"data=" + data计算结果为data=[object Object] ,因为对象在连接时被强制转换为字符串。 所以这不是我们想要的。

事实上,JSON 可以提供帮助,因为它 forms 是复杂数据的一个漂亮、统一的接口。 此外,您不想自己指定参数编码( data=...作为字符串),因为 jQuery 可以为您完成,如果您只传递包含参数的 object 。 我还冒昧地将参数重命名为payload ,所以我们没有两个不同的东西,既命名为data又混淆了答案。 你会这样使用它:

$.ajax({
  ...
  data: {
    payload: JSON.stringify(data)
  },
  ...
});

然后在 PHP 中,

$payload = json_decode($_POST['payload']);

我们也可以直接发送 JSON 作为 POST 请求正文,而不是作为 POST 参数,但是 PHP 对访问它并不是很好。 你可以在这里看到更多。

但是,您没有复杂的数据结构,您有三个平面变量 - 可以简单地作为三个 POST 变量传输。 在这种情况下,这就足够了:

$.ajax({
  ...
  data: data,
  ...
});

在 PHP 中:

$v_Post = $_POST['v_Post'];
$x = $_POST['x'];
$y = $_POST['y'];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM