2016-05-24 80 views
0

我有這樣的代碼中的javascript:轉換JSON屬性爲int 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': 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?

+1

您需要在服務器端執行顯式類型的大小寫,因爲http請求值是無類型的。或者,您可以將最終的JSON格式從客戶端發送到服務器。 – arkascha

+1

你真的需要它作爲一個整數,而不是一個字符串,而不是你只需要在需要它的地方鍵入它就可以。 – adeneo

+1

在發送發佈數據到服務器之前做一個'JSON.stringify',並在沒有'json encode'的情況下寫入它。 '$ _POST'變量將始終是字符串。 – apokryfos

回答

2

問題是$ _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。