我在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?

最佳答案

问题在于$ _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,而JavaScript确实可以使用原始数据。

07-24 09:23