【问题标题】:Convert JSON property to int php将 JSON 属性转换为 int php
【发布时间】:2016-09-21 23:32:22
【问题描述】:

我在 javascript 中有这段代码:

var oRows= [];
 for(var i = 0 ; i < 3 ; i ++) {
 var oItem = {name: "example", id: i};
 oRows.push(oItem);
}
 $.ajax({
   url: '/savejson.php',
   method: 'post',
   data: { 'oRows': oRows }
 }).done(function (data) {
     console.log(data);
 });

和php中的代码:

<?php
        $fp = fopen('/data/DecisionTableRows.json', 'w');
        fwrite($fp, json_encode($_POST['oRows']));
        fclose($fp);
?>

但在 JSON 文件 /data/DecisionTableRows.json 中,我仍然将属性 ID 设为字符串,如何将其写为 int?

【问题讨论】:

  • 您需要在服务器端执行显式类型案例,因为 http 请求值是无类型的。或者,您可以将最终的 JSON 格式从客户端发送到服务器。
  • 你真的需要它作为一个整数,而不是一个字符串,你不能在你需要的地方直接输入它。
  • 在将帖子数据发送到服务器之前执行JSON.stringify,并在没有json encode的情况下写入。 $_POST 变量永远是字符串。
  • 我认为他的意思是,如果您执行 data: { 'oRows': JSON.stringify(oRows) } 并将其作为字符串发送,然后不在服务器端进行编码,您将保留整数。
  • 天啊fwrite($fp, $_POST['oRows']);

标签: javascript php json ajax server


【解决方案1】:

问题在于 $_POST 变量总是字符串。

为了避免手动执行is_numeric 并在 PHP 中对它们中的每一个进行强制转换,您可以这样做:

var oRows= [];
 for(var i = 0 ; i < 3 ; i ++) {
 var oItem = {name: "example", id: i};
 oRows.push(oItem);
}
 $.ajax({
   url: '/savejson.php',
   method: 'post',
   data: { 'oRows': JSON.stringify(oRows) }
 }).done(function (data) {
     console.log(data);
 });

在 PHP 中

<?php
        $fp = fopen('/data/DecisionTableRows.json', 'w');
        fwrite($fp, $_POST['oRows']);
        fclose($fp);
?>

通过这种方式,您可以将编码的责任转移到 JSON 上,然后转移到确实有原始数据可以使用的 JavaScript 上。

【讨论】:

    猜你喜欢
    • 2021-10-26
    • 2011-06-18
    • 1970-01-01
    • 2014-04-17
    • 2016-08-09
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 2015-11-20
    相关资源
    最近更新 更多