Re: [ajax] 可以使用GET無法使用POST

看板Ajax作者 (小犬)時間16年前 (2009/09/13 04:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《hellolucky (做自己 好自在)》之銘言: : 我的功能主要是想利用ajax丟一個網址給php處理 : 現在面臨一個兩難 : -------------------------------------------------------------- : 使用GET:(嫌太多可以直接看POST部分 這個不是大問題) : 假設url="http://aaa.aaa.aaa/aaa.php?a=123&b=123&c=123" : 我把這個url丟給handle.php去處理 : handle.php收到的值變成 : url=http://aaa.aaa.aaa/aaa.php?a=123 : a=123 b=123 c=123 : 我知道這個可以用escape(url)去解決 實際上escape()並不正確,見下 : 但我利用網路上php的unescape function去解讀會變成 : url="http://aaa.aaa.aaa/aaa.php?a=123b=123c=123" : 莫名奇妙少了& : 附一下function (不過我想重點不是這段 下半段問題比較大) 因為 GET 方法下參數必須要以 & 作分隔 所以 PHP 會自然將你含有 & 的 URL 視為好幾個不同的參數... Orz 要 Unescape 回去的風險實在太大... 正解是,在 JavaScript 上作 encodeURIComponent var url = "handle.php?url=" /* 此行和下一行併成一行 */ + encodeURIComponent("http://a.b.c/aaa.php?a=123&b=123&c=123"); xmlHttp.open("GET", url, true); encodeURIComponent "才會" 將 & 作轉換,escape() 和 encodeURI() 都不會 囧 這樣你的 $_GET['url'] 就會是 "http://a.b.c/aaa.php?a=123&b=123&c=123" 了 :) : ------------------------------------------------------------ : 使用POST: : 接下來我想說使用POST去處理看看 : 但怎麼丟都都不過去 : 很簡單的一個小東西用了五六個小時 有點頭大 兩個問題 : ajax: : createXMLHttpRequest(); : var url="handle.php?timeStamp=" + new Date().getTime(); var queryString="a=123&url=" /* 此行和下一行併成一行 */ + encodeURIComponent("http://a.b.c/aaa.php?a=123&b=123&c=123"); // Query String 的格式和 GET 傳進去的方法很像! : xmlHttp.open("POST", url, true); : xmlHttp.onreadystatechange=handleStateChange; : xmlHttp.setRequestHeader("Content-Type", : "application/x-www-form-urlencoded"); xmlHttp.setRequestHeader("Content-length", queryString.length); : xmlHttp.send(queryString); : php: 跟你寫的類似,不過你就該抓$_POST['a']、$_POST['url']囉 : 已經把可能出錯的東西丟挑掉了 : 測試結果應該是post丟不過去 : 可以請問一下我哪個部份有問題嗎 : 感謝......@________@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.170.69.104 ※ 編輯: ybite 來自: 218.170.69.104 (09/13 04:17)
文章代碼(AID): #1Ah076mA (Ajax)
文章代碼(AID): #1Ah076mA (Ajax)