【问题标题】:How to keep variable types inside object posted through ajax?如何将变量类型保留在通过 ajax 发布的对象内?
【发布时间】:2019-07-03 15:26:53
【问题描述】:

我通过 ajax 将对象传递给 PHP 文件进行如下处理:

var Obj = {id:1, name:"John", value:12.1};

$.ajax({
        url : "myfile.php",
        type : 'POST',
        data : Obj,
        success : function(data) {
            console.log(data);
});

我的问题是当我收到 $_POST 变量的参数时,所有内容都是一个字符串,如 id => "1" 或 value => "12.1"。例如,我希望它们像 Int 和 Float 一样保持不变,而无需在 PHP 端进行额外的转换。

有没有简单的方法来维护变量类型?

【问题讨论】:

  • 当 PHP 从提交中接收到值时,它们总是字符串。您将需要在 PHP 中转换它们。 Obj 中的数据将像这样发送到服务器:id=1&name=John&value:12.1"。如您所见,PHP 无法知道它应该是什么类型。
  • 如果你想保留类型信息,那么你应该将数据作为 JSON 字符串传递给你的服务器,PHP 可以使用json_decode() 来保留变量类型。
  • 您还需要修复该 javascript 中的语法错误。 success 方法中缺少 }

标签: php jquery ajax


【解决方案1】:

您需要在 PHP 上转换值,因为 PHP 接收值作为字符串:

$data = $_POST['data'] ; 

$int = (int)$data['id']; // or   intval($data['id'])
$float = (float)$data['value']; // or  floatval($data['value'])

【讨论】:

    【解决方案2】:

    有没有简单的方法来维护变量类型?

    不是真的。用于发送数据的数据格式不带有任何类型的提示。

    您可以改用 JSON。

    发送时必须encode the data as JSON,然后explicitly decode it in PHP

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2018-12-01
      • 2015-09-13
      • 2012-10-29
      • 1970-01-01
      • 2013-02-25
      相关资源
      最近更新 更多