2012-06-15 91 views
3

我不能JS對象轉換成精確的字符串,我的代碼:JavaScript對象字符串轉換爲字符串

jsonObj['payment_value']=100.10; 
jsonObj['payment_date']="2012-06-15"; 
jsonObjStr = JSON.stringify(jsonObj); 
alert(jsonObjStr); 
$.post("test", jsonObjStr.toString(), function(output){ 
    alert(output); 
}); 

第一個警報顯示:

{ 「PAYMENT_DATE」: 「2012-06-15」 「payment_value」:100.1}

和功能測試(我使用CodeIgniter的框架),它應打印 「PAYMENT_DATE」 和 「payment_value」,這樣的代碼:

echo $this->input->post("payment_value"); 
echo $this->input->post("payment_date"); 

這是在 「清除」 PHP等同放着清單:

echo $_POST["payment_value"]; 
echo $_POST["payment_date"]; 

但第二警報顯示清晰的字符串。

如果我把

{ 「PAYMENT_DATE」: 「2012-06-15」, 「payment_value」:100.1}

jsonObjStr.toString(),它工作正常

代替

有沒有人知道如何解決它沒有使用json_decode?我需要在這個格式已經公佈值,而不是在其他陣列

,所以我需要jsonObjStr轉換精確到字符串(東西成反比函數eval())

感謝在諮詢

+1

我不知道我理解你想要做什麼。你的預期輸出是什麼? – hayavuk

回答

4

$.post文檔,第二參數應該是地圖或查詢字符串:

地圖例如:

{ 
    "payment_date":"2012-06-15", 
    "payment_value":100.1 
} 

查詢字符串例如:

'payment_date=2012-06-15&payment_value=100.1​​​' 

當您使用JSON.stringify,那麼你得到:

'{"payment_date":"2012-06-15","payment_value":100.1}' 

這是無效的query string。因此,解決辦法是:沒有任何字符串化,傳遞對象本身作爲第二個參數:

jsonObj['payment_value']=100.10; 
jsonObj['payment_date']="2012-06-15"; 
$.post("test", jsonObj, function(output){ 
    alert(output); 
}); 
+0

我不敢相信它是如此簡單...... 顯然它工作正常! 謝謝! – Markoj