【背景】 要對一條運(yùn)輸信息進(jìn)行修改。 1.點擊修改按鈕 2.跳轉(zhuǎn)到編輯頁面 3.并且把數(shù)據(jù)庫查詢得到的內(nèi)容填寫到跳轉(zhuǎn)網(wǎng)頁的表單中
【說一下思路】 1.點擊按鈕之后,觸發(fā)函數(shù),這個函數(shù)能夠獲取到頁面中被選中要修改的項目的標(biāo)識,通過Ajax將此值傳給php文件。 2.接下來php會進(jìn)行數(shù)據(jù)庫操作,把選中的項目信息查詢出來,封裝成json傳回給js。 3.js從后臺獲取到返回值,解析json,得到項目信息值。 4.跳轉(zhuǎn)網(wǎng)頁到添加發(fā)布頁面,把獲取到的信息值填入該頁面。
【針對上面的思路,要解決下面幾個問題:】 1.php怎么封裝json?js又怎么解析json 2.js跳轉(zhuǎn)怎么實現(xiàn)? 3.js如何獲取url中的參數(shù)?中文亂碼問題如何解決?
解決過程真是異常艱難,在學(xué)習(xí)狀態(tài)不好的情況下,用了一天半的時間,中間百度了無數(shù),也問了無數(shù)次別人,像只被喂了食的小鴨子。
=>【php怎么封裝json? js又怎么解析json】 在還沒有意識到php向js回傳數(shù)據(jù)時需要發(fā)送json前,js是無論如何都接收不到回值的。也不知道是為什么,一直在原地盤旋。以為是php沒有post到值,做測試時發(fā)現(xiàn)php這邊是可以輸出想要的東西的。
比如設(shè)被選中的單選框id是2
$radio=2顯示結(jié)果:
所以并不是php post不到值或者無法獲得查詢結(jié)果,而是回傳有問題。 在查了很久的資料之后……好漫長,才知道要對于json進(jìn)行封裝。修改代碼如下:
json_encode將上篇提到的【關(guān)聯(lián)數(shù)組】轉(zhuǎn)換成json格式,然后回傳。接著在js中對回傳的json格式進(jìn)行解析:
首先,要接收到后臺返回的數(shù)據(jù):
htmla.respondseText得到的字符串,用jQuery.parseJSON()把json解析出來。
(PS:向ajax后臺的程序發(fā)送xmlhttp請求的時候,后臺程序接到請求后會進(jìn)行處理,初級結(jié)束后,可以返回一串?dāng)?shù)據(jù)給前臺,這個就是responseText。)
json的格式是鍵值對,那么是通過key來訪問value的,所以會看到是infos.key獲取到我們需要的值。
=> 【js跳轉(zhuǎn)怎么實現(xiàn)?】 現(xiàn)在已經(jīng)把值準(zhǔn)備好了,接下來是把值傳到頁面,然后顯示。首先就要解決如何轉(zhuǎn)頁面。 跳轉(zhuǎn)很多方法,然而試過了,竟然奇跡般的都不行!!!! 最后找到一種辦法,就是上圖中的window.open(url)。
=> 【js如何獲取url中的參數(shù)?中文亂碼問題如何解決?】 好了,現(xiàn)在值也獲取到了 ,頁面也跳轉(zhuǎn)了,解決最后一個問題吧! 在此之前我知道的都是php可以_GET()和_POST()可以獲得參數(shù)。js中沒有現(xiàn)成的函數(shù),要通過自己寫。我從網(wǎng)上找的現(xiàn)成的,直接貼出來吧。
攔路虎:alert(GetQueryString(“pname”))時,出現(xiàn)了亂碼,因為pname是中文的嘛!
出現(xiàn)中文亂碼還能是因為啥……八成是編碼問題。 具體的為啥不想仔細(xì)寫了,貼參考地址: http://www.jb51.net/article/19850.htm 查了一段時間,找到了一個辦法,先這么用吧。
encodeURL對數(shù)據(jù)進(jìn)行utf8編碼
然后用decodeURL對數(shù)據(jù)進(jìn)行2次解碼。 調(diào)用上面說的方法GetQueryString(),獲取到地址欄中的參數(shù)。
這個時候地址欄變成了….
突然意識到,有時候看到的地址欄中也是亂七八糟的一串。
來一張跳轉(zhuǎn)成功并且顯示成功的效果圖:
【想要交流】 還有更簡單的方法來實現(xiàn)獲取url中參數(shù)不亂碼的嗎?
新聞熱點
疑難解答