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

看板Ajax作者 (做自己 好自在)時間16年前 (2009/09/13 15:11), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
真是太感謝 解決了 所以我來總結一下 1.我用js的escape()去編碼再用php去解碼是第一個錯誤 解決方案是直接用encodeURIComponent()去處理網址 也不用所謂的解碼 2.我在post的時候 少了設定Content-length(是只有丟網址要設定嗎?) 而且一個錯很大的觀念 我以為把queryString丟過去 就會收到$_POST['queryString']這個變數 實際上還是要在queryString裡面設定一個變數ex: queryString="url=xxxxxxxxxx"; 這樣php那邊才會收到$_POST['url']這個變數 這樣應該沒錯吧?! 觀念錯誤的時候花了五六個小時 了解以後只花了五分鐘就解決了 寫程式就是這麼一念之差 感謝阿 獲益良多^_______________^ ※ 引述《ybite (小犬)》之銘言: : ※ 引述《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: 203.73.7.139
文章代碼(AID): #1Ah9iD5k (Ajax)
文章代碼(AID): #1Ah9iD5k (Ajax)