我有一個URL字符串是這樣的:如何將URL(包含變量)作爲單個var發送?
http://www.google.com/cse?cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g
我需要從AJAX發送URL以便PHP腳本作爲一個字符串變量。
雖然我遇到了麻煩,因爲它由於url字符串本身中的變量而不斷分裂成多個變量。合理?我怎樣才能把它作爲一個單一的字符串?
謝謝!
我有一個URL字符串是這樣的:如何將URL(包含變量)作爲單個var發送?
http://www.google.com/cse?cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g
我需要從AJAX發送URL以便PHP腳本作爲一個字符串變量。
雖然我遇到了麻煩,因爲它由於url字符串本身中的變量而不斷分裂成多個變量。合理?我怎樣才能把它作爲一個單一的字符串?
謝謝!
你需要對其進行編碼。
在PHP:urlencode()
$str = urlencode('http://....');
在Javascript中:encodeURIComponent方法
str = encodeURIComponent('http://...');
escape()
或encodeURIComponent()
也,你可以嘗試加密(如BASE64)
base64不加密 – 2009-05-22 14:11:56
正確,不是加密。而...嘿..第三方base64上的JS編碼URL ...爲什麼? – Jet 2009-05-22 16:27:04
我猜你一定要逃逸()在JavaScript這樣
逃生(「CX = 017840637368510444960:ny1lmky7r -0 & client = google-csbe & output = xml_no_dtd & q = simon + g「 )
編輯:我剛剛搜索並發現encodeURIComponent()是最好的解決方案。
逃生(),是encodeURI()和encodeURIComponent方法的一個很好的比較見http://xkr.us/articles/javascript/encode-compare/()
<?php
// In your URL-emitter page
$decoded_url = "http://www.google.com/cse?cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g";
$link_addr = "/index.php?encodedurl=".urlencode($decoded_url);
echo '<a href="'.$link_addr.'">Click me</a>';
// in your URL-reciever page (here the same page)
if(array_key_exists("encodedurl",$_GET)) {
echo 'decoded url='.urldecode($_GET["encodedurl"]);
}
爲什麼downvote? – Jab 2009-05-22 14:46:10