Ajax中responseText的json格式數據
向瀏覽器發送數據請求,返回的responseText是json數據格式,如果要使用其中的數據,需要進行解析。下面是兩種解析方法:
方法一:
xhr = new XMLHttpRequest() // 創建XMLHttpRequest對象 var data = xhr.responseText; // 獲取響應數據 var json=JSON.parse(data); // 使用JSON.parse()進行解析:使用JSON對象的靜態方法parse(),將字符串解析為對象。
方法二:
xhr = new XMLHttpRequest() // 創建XMLHttpRequest對象 var data = xhr.responseText; // 獲取響應數據 var jsonObject=eval("("+result+")"); // 使用eval() 進行解析,其中"(" + result+ ")"的兩個括號是一定要寫的,意思是將其中的relult轉換成表達式。但是eval() 存在安全隱患。
相關知識點:表達式還是語句?
如果在行首是一個大括號,那么它到底是表達式還是語句呢?遇到這種情況,JavaScript引擎一律解釋為代碼塊,但是如果非要解析成對象,該怎么辦呢?那就在使用括號將其包裹起來,這種情況在eval() 語句中表現的最明顯了
eval('{foo:123}') // 解析成代碼塊——表示一個代碼塊中有一個foo標簽,指向一個表達式123 eval('({foo:123})') // 解析為一個對象——表示一個對象,其中屬性foo,指向了123