2012-02-20 102 views
-3

我可以看到這個問題被問了很多次,我做了大量的研究,可以使用哪些方法將幾個Javascript變量傳遞給PHP腳本。在形式PHP腳本的Javascript變量

  1. 後的數據作爲隱藏值
  2. 後到URL,即 '/txt.php?h=' + VAR
  3. 使用Cookie

我試着寫一段代碼,可以讓你下載你在Wrrrite.com寫的東西 - 我是這個網站的開發者。 (我也做了一個客戶端的方法,把變量放入URI並設置一個頭部來下載東西)

這一切都不起作用。要麼有導致錯誤的字符,要麼有html元素。

有什麼我可以編碼,以保證工作/變量的1:1轉移?

數據類型:HTML +各種不同的字符「!!!」等 輸出:.txt文件,perferably 1:中正在寫入的形式

+3

你試圖傳輸什麼樣的數據?如果它是HTML,將表單中的數據作爲隱藏值發佈應該可行。 (所以應該是一個Ajax POST請求。) – 2012-02-20 10:56:07

+0

PHP與此有什麼關係? Wrrrite似乎完全使用JavaScript編寫,並使用本地存儲(由於數據已經是本地數據而「下載」不可能)存儲數據。 – Quentin 2012-02-20 10:57:43

+0

你有什麼代碼?什麼「不起作用」?你會得到什麼錯誤? – Quentin 2012-02-20 11:01:04

回答

1

你也許應該使用您的數據的Base64編碼是什麼,在發送前1轉換看一看MDN for the JavaScript部分和here對於PHP解碼,這可以防止特殊字符破壞您的代碼。

+1

Base64將數據量膨脹了33%,並且在使用POST時不應該這樣。 – 2012-02-20 11:06:43

+0

他指出他的問題是數據中的特殊字符和html元素。兩者都可以被Base64繞過。 – Sirko 2012-02-20 11:10:03

+0

當內容只是文字時,它不應該是必要的,這似乎是從問題中的網站一目瞭然。 encodeUriComponent是一個更明智的方法。 – Quentin 2012-02-20 11:10:23

0

希望它可以幫助

//PHP 

if(isset($_REQUST['submit'])) 
{ 
    $download=$_REQUEST['download']; 
// from database get value of all the downloadable items 
// and check if the input is in that array then to the suitable thing. 
} 
//HTML 
<form method="post" action=''> 
Type :<input type="text" id="txtField" name="txtField" /> 
<input type="hidden" name='download' /> 
<input type="submit" name="submit" onclick="return onSubmit() " /> 
</form> 

//Javascript 

<script type="text/javascript"> 
function onSubmit() 
{ 
if(document.getElementById("txtField").value != '') 
{ 
    document.getElementById("download").value=document.getElementById("txtField").value; 
return true; 
} 
else 
{ 
alert("Please enter item to download"); 
return false; 
} 
} 
0

這裏的Cookie的方法,該方法不起作用http://pastebin.com/SKNtxLi5

這只是將數值合併在一起,而不考慮cookie中使用的數據格式。

如果你想解決這個問題,怪異模式有decent guide to cookies with JS

但是......餅乾的重點在於數據依然存在。對於一次拍攝的信息來說,這不是一個明智的轉變。