2010-09-17 169 views
0

我試圖獲得一個JavaScript腳本(準確地說是在一個Safari擴展中運行)發送一些字符串到我的服務器上的PHP腳本。我通過構建一個帶有變量的URL來工作,但我想用POST來做到這一點,以使其更加安全,並通過其中一個變量「&」。將變量傳遞給PHP從PHP

有沒有一種方法可以做到這一點?謝謝!

+0

您確實[在提問前使用了搜索功能](http://stackoverflow.com/search?q=Pass+variables+to+PHP+from+javascript)? – Gordon 2010-09-17 06:46:19

回答

1

幾件事情:

首先,你可以通過URL使用escape()函數從JavaScript發送數據安全:

window.location="myscript.php?company=" + encodeURIComponent("Ben & Jerry's Ice Cream"); 

,然後你可以解碼值在PHP中使用urldecode()函數:

$company = urldecode($_GET["company"]); 

,然後你將有完全一樣的輸入值。

重要的是要認識到,無論您是通過POST還是GET發送數據,您都必須對數據進行編碼。它們的格式相同,都使用&標誌來分隔鍵/值對

您的第二個選擇是使用Ajax(與其他許多人所建議的一樣)。這會影響不會刷新頁面的效果。這可能會也可能不會,但那會發生。

如果你不希望使用Ajax調用,你第三個選擇是,你可以簡單地將一個網頁上的表單:

<form name="myform" method="POST" action="MyPhpScript.php"> 
    <input type="hidden" name="value1" /> 
    <input type="hidden" name="value2" /> 
</form> 

然後,從JavaScript,設置隱藏表單值和提交表格。

挑選你的毒藥 - 你有充裕的選擇:)

+0

而不是轉義你可以/應該使用encodeURIComponent並且不必擔心服務器端的解碼。 – Rafael 2010-09-17 05:51:34

+0

@Rafael,好點關於escape()(永遠不會知道),但你肯定仍然必須在後端使用decode()(除非你想用%20代替「」) – riwalk 2010-09-17 13:32:42

+0

我不確定if它總是這樣,但我的服務器上的$ _GET(PHP)保存已解碼的空格字符。 – Rafael 2010-09-17 16:52:26

0

是的,你不需要使用AJAX。您可以使用HTTP POST請求。這基本上是一個HTML表單。當然,如果你希望數據傳遞給PHP而不需要網頁訪問者點擊某些東西,你需要使用Javascript來提交表單(可以使用隱藏元素),或者使用AJAX(xmlhttprequest)。隨意問一個更具體的問題。

0

一個不同的解決方案,我用它在我的項目之一:用餅乾從JavaScript重載頁面

設置cookie並把它在PHP

+0

有趣!如何使用JS創建/設置cookie? – 2010-09-17 07:46:12