ajax獲取json數(shù)據(jù)為undefined原因分析
Asynchronous JavaScript and XML (Ajax ) 是驅(qū)動(dòng)新一代 Web 站點(diǎn)(流行術(shù)語為 Web 2.0 站點(diǎn))的關(guān)鍵技術(shù)。Ajax 允許在不干擾 Web 應(yīng)用程序的顯示和行為的情況下在后臺(tái)進(jìn)行數(shù)據(jù)檢索。使用 XMLHttpRequest 函數(shù)獲取數(shù)據(jù),它是一種 API,允許客戶端 JavaScript 通過 HTTP 連接到遠(yuǎn)程服務(wù)器。Ajax 也是許多 mashup 的驅(qū)動(dòng)力,它可將來自多個(gè)地方的內(nèi)容集成為單一 Web 應(yīng)用程序。
一般處理服務(wù)器傳來的json值時(shí),我們都會(huì)用兩種方式進(jìn)行處理:
1.一種為使用eval()函數(shù)。var dataObj=eval("("+data+")");
//轉(zhuǎn)換為json對(duì)象(注:data為json數(shù)據(jù));
2. 使用Function對(duì)象來進(jìn)行返回解析。var json =(new Function("","return "+data))();
但是今天做項(xiàng)目(項(xiàng)目用struts2)時(shí)用這兩種方法進(jìn)行json讀取,輸出時(shí)一直是undefined。上網(wǎng)查了許多資料,大多都說不明白,后來查到一篇文章作者也遇到這種情況,他解決的辦法是在action中將返回值聲明json屬性,在自己的項(xiàng)目上測試后不通過,后來解決的辦法是再轉(zhuǎn)一次。以下是自己的思考:從后臺(tái)傳來的數(shù)據(jù)雖然聲明為json屬性,但是傳到前臺(tái)時(shí)其實(shí)還是一個(gè)字符串,不是一個(gè)json對(duì)象,這時(shí)候我們需要對(duì)后臺(tái)的數(shù)據(jù)進(jìn)行處理,轉(zhuǎn)化為json對(duì)象,然后獲取json中的值。但是有時(shí)候后臺(tái)傳來的值不一定是標(biāo)準(zhǔn)的json格式的字符串,雖然我們通過前面的兩種方法之一轉(zhuǎn)化后臺(tái)傳來的對(duì)象,但是這時(shí)候轉(zhuǎn)化的json對(duì)象實(shí)際上還是一個(gè)字符串,是一個(gè)標(biāo)準(zhǔn)的json字符串,我們?cè)僖淮无D(zhuǎn)換后就成了一個(gè)json對(duì)象。
以下是部分代碼:
result = JSONObject.fromObject(map).toString();//后臺(tái)代碼,將map轉(zhuǎn)成json對(duì)象 success : function(result) {//前臺(tái)返回值代碼 var obj = eval("("+result+")"); //var data1 =(new Function("","return "+obj))(); var data1=eval("("+obj+")"); alert(data1.name); }
總結(jié)
以上所述是小編給大家介紹的ajax獲取json數(shù)據(jù)為undefined原因分析,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
ajax返回的json內(nèi)容進(jìn)行排序使用sort()方法實(shí)現(xiàn)
關(guān)于ajax返回的json內(nèi)容進(jìn)行排序,主要使用sort()對(duì)數(shù)組的元素進(jìn)行排序,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-07-07Ajax客戶端異步調(diào)用服務(wù)端的實(shí)現(xiàn)方法(js調(diào)用cs文件)
下面小編就為大家分享一篇Ajax客戶端異步調(diào)用服務(wù)端的實(shí)現(xiàn)方法(js調(diào)用cs文件),具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-12-12DELETE 請(qǐng)求如何通過ajax進(jìn)行發(fā)送(方法小結(jié))
DELETE 請(qǐng)求用于向服務(wù)器發(fā)送刪除資源的請(qǐng)求,它是 RESTful API 中的一個(gè)重要方法,用于刪除指定的資源,本文給大家介紹DELETE 請(qǐng)求如何通過ajax進(jìn)行發(fā)送,感興趣的朋友一起看看吧2023-11-11聊聊Ajax提交form表單的看法和認(rèn)識(shí)
Ajax,異步請(qǐng)求,通過在后臺(tái)與服務(wù)器進(jìn)行少量數(shù)據(jù)交換,AJAX 可以使網(wǎng)頁實(shí)現(xiàn)異步更新。通過本文給大家聊一聊ajax提交form表單的看法和認(rèn)識(shí),感興趣的朋友一起學(xué)習(xí)吧2016-10-10Ajax中通過JS代碼自動(dòng)獲取表單元素值的示例代碼
如果表單元素不多的情況我們常常會(huì)通過GET方式來獲取表單元素值,但如果表單元素非常多,此時(shí)就需要用POST方式來獲取表單元素值,那么如何來獲取表單元素值呢2014-09-09ajax獲取json數(shù)據(jù)為undefined原因分析
Ajax 允許在不干擾 Web 應(yīng)用程序的顯示和行為的情況下在后臺(tái)進(jìn)行數(shù)據(jù)檢索。這篇文章主要介紹了ajax獲取json數(shù)據(jù)為undefined--原因,需要的朋友可以參考下2017-11-11如何創(chuàng)建ajax對(duì)象并兼容多個(gè)瀏覽器
這篇文章主要介紹了創(chuàng)建ajax對(duì)象并兼容多個(gè)瀏覽器方法簡單記錄,在某些情況下還是比較實(shí)用的,需要的朋友可以參考下2014-08-08