ajax如何傳送數組、JSON.parse和JSON.stringify區別,
【ajax如何傳數組給php?有哪些辦法?】
首先瞭解:
data有兩種傳參類型,一個對象(Object),而是字串(String)。而物件類型必須是索引值對的格式。
基於data只能傳送兩種類型的資料 (js是這樣,jq會把數組轉化成string),所以需要一定的方法把數組轉化為json格式,如果手動的話是很不現實的,如果這個數組足夠大,所以一定會有已經成型的方法實現了這個功能。
當時經過百度後,我認為靠譜的方法。
1.$.toJson(“要轉換的數組”)2.JSON.stringify("要轉化的數組")。
現在我把被選中的多選框的value儲存在一個數組checked_value[]中,想要把它傳給php。(不是對象也不是字串,是單純的數組)
複製這個數組,接下來讓它被轉化成【索引值對】的Json格式。
因為這個數組jsonstr本身是一個普通數組。
所以在寫入ajax的data時,不能直接data:jsonstr,而是要寫成data:{jr:jsonstr},
這樣才是索引值對。預設的鍵從0開始,值就是原來數組裡那些value。
(當時不是太明白,各種測試修改得到的結果)
很囉嗦對不對?
之前寫在空間裡的時候估計也迷迷糊糊的,現在又重新查了資料又明白了一些。
說一下兩個方法原本的用法。
1.JSON.parse(“要轉換的數組”)
2.JSON.stringify(“要轉化的數組”)。
首先,兩個方法的用法是有差別的。
JSON.stringify是從一個對象中解析出字串。
JSON.parse是從一個字串中解析出json(索引值對)。
所以在使用的時候如果參數不對應,就不能正確轉換。
具體用法:
JSON.parse:字串->索引值對
var str = ‘{“address”:”明水”,”phone”:”1237828”}’;
JSON.parse(str);
>
address: “明水”
phone: “1237828”
需要注意的是,單引號後花括弧。雙引號就麻煩了。貌似還要在花括弧裡面的雙引號前面加\,否則算語法錯誤。
JSON.stringify:對象->字串
var a = {a:1,b:2}
JSON.stringify(a)
>
“{“a”:1,”b”:2}”
貼一個很強大的解析。
http://www.jb51.net/article/29893.htm