我在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确实可以使用原始数据。