我想從我的html閱讀發佈請求參數。我可以在javascript中使用以下代碼讀取獲取請求參數。如何閱讀使用javascript的發佈請求參數
$wnd.location.search
但它不適用於發佈請求。任何人都可以告訴我如何閱讀我的HTML使用javascript中的發佈請求參數值。
我想從我的html閱讀發佈請求參數。我可以在javascript中使用以下代碼讀取獲取請求參數。如何閱讀使用javascript的發佈請求參數
$wnd.location.search
但它不適用於發佈請求。任何人都可以告訴我如何閱讀我的HTML使用javascript中的發佈請求參數值。
POST數據是處理服務器端的數據。而且Javascript在客戶端。所以你無法使用JavaScript讀取發佈的數據。
JavaScript是一種客戶端腳本語言,這意味着所有的代碼都在Web用戶的機器上執行。另一方面,POST變量則轉到服務器並駐留在那裏。瀏覽器不會將這些變量提供給JavaScript環境,也不應該有任何開發人員期望他們神奇地在那裏。
所以讀取POST變量幾乎是不可能的。 GET變量是一種僥倖,因爲它們在URL中,這是客戶端機器知道的事情。
但是,如果服務器響應將它們回顯到腳本中,則可以讀取POST變量的值。
我強烈地不同意你的-1。在OP中沒有任何地方提到了AJAX的問題,因此留下了鏈接點擊和表單提交不可能通過JavaScript執行的可能性。後者特別是POST變量存在但在客戶端不可用的示例,除非服務器響應由腳本生成,並且腳本選擇將POST變量的值回顯到JS代碼中。如果我能-1你的評論,我會的。 – 2013-06-13 04:10:35
我不是在談論AJAX。我的參數引用任何形式的POST請求。瀏覽器知道作爲HTTP請求的一部分發送的每個參數,其中包括URL和POST參數等。其中一些參數可用於JavaScript,而其他參數則不可用。這只是瀏覽器強加的一個限制,它可以很好地從JS訪問POST參數,但事實並非如此,這是簡單的事實。 – GetFree 2013-06-13 18:51:52
你沒有明白我的觀點。除非服務器明確提供它們,否則沒有人會寫一個期望POST變量可用的JavaScript。如果服務器不提供它們,那麼就編寫JavaScript代碼的Web開發人員而言,他們可能完全不在客戶端。 – 2013-06-13 22:18:09
$(function(){
$('form').sumbit{
$('this').serialize();
}
});
在jQuery中,上面的代碼會爲您提供帶有POST參數的URL字符串。 提取POST參數並不是不可能的。要使用jQuery,您需要包含jQuery庫。使用了下列:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js" type="text/javascript"></script>
這隻會從**中獲取表單提交頁面上的POST參數。這似乎是一個安全的假設,OP希望在表單提交的頁面上獲取POST參數**到**。這是不可能的。 – 2014-10-29 21:18:45
一小塊的PHP來獲得服務器,填入一個JavaScript變量是快速和容易:
var my_javascript_variable = <?php echo $_POST['my_post'] ?>;
然後,只需訪問以正常方式JavaScript變量。
小心逃脫/添加引號/等。到您的POST數據,如果你走這條路線。另一種方法是使用json_encode(),它幾乎適用於任何數據類型。例如:http://www.abeautifulsite.net/passing-data-from-php-to-javascript/ – claviska 2015-06-14 00:59:24
現在這就是我所說的開箱即用的想法。 – 2017-01-15 12:18:28
這是確實做到這一點的最簡單方法。這在wordpress中適用於我,創建一個新的主題頁面,並簡單地暴露窗口級別的發佈數據,如window.my_prefix_post_data = <?php echo $ _POST ['my_post']?>;然後輕鬆地從任何範圍訪問發佈數據。這不會被推薦用於一直有很多敏感的帖子數據的網站,但是對於我們網頁/網站的範圍來說,它的效果很好。 – 2018-02-08 23:58:08
POST是瀏覽器從客戶端(您的瀏覽器)發送到Web服務器的內容。發佈數據通過http頭髮送到服務器,並且它僅在服務器端或從客戶端(您的瀏覽器)到Web服務器的路徑(例如代理服務器)之間可用。所以它不能從JavaScript這樣的客戶端腳本中處理。您需要通過服務器端腳本(如CGI,PHP,Java等)來處理它。如果您仍然需要使用JavaScript編寫代碼,則需要有一個可在您的服務器中理解並執行JavaScript的Web服務器,如Node.js
POST如果同一個瀏覽器首先發送了變量,則只有瀏覽器才能使用變量。如果另一個網站表單通過POST提交到另一個URL,瀏覽器將不會看到POST數據進來。
網站A:有一個表單使用POST提交到外部URL(網站B) 網站B:將收到訪問者但只有GET變量
您可以使用jQuery-PostCapture(@ssut/jQuery-PostCapture)讀取post請求參數。
PostCapture插件是由一些技巧組成的。
當你點擊提交按鈕時,onsubmit
事件將被分派。
當時,PostCapture將序列化表單數據並保存到html5 localStorage(如果可用)或cookie存儲。
爲什麼不使用localStorage或任何其他方式來設置您想要通過的值? ?
這樣你就可以從任何地方訪問它!
爲什麼不只是一個簡單的cookie? – 2018-01-10 10:17:09
@jj_這也會起作用! – 2018-01-10 10:30:55
<head><script>var xxx = ${params.xxx}</script></head>
在<head>
使用EL表達式$ {} param.xxx從POST方法獲取參數,可以並確保<head>
打完js文件包含你能處理像「XXX」直接在您的PARAM js文件。
你可以'json_encode'首先通過PHP編碼你的發佈變量。 然後從JSON編碼的後期變量中創建一個JS對象(數組)。 然後使用JavaScript循環來操縱這些變量...喜歡 - 在下面這個例子 - 來填充HTML表單形式:
<script>
<?php $post_vars_json_encode = json_encode($this->input->post()); ?>
// SET POST VALUES OBJECT/ARRAY
var post_value_Arr = <?php echo $post_vars_json_encode; ?>;// creates a JS object with your post variables
console.log(post_value_Arr);
// POPULATE FIELDS BASED ON POST VALUES
for(var key in post_value_Arr){// Loop post variables array
if(document.getElementById(key)){// Field Exists
console.log("found post_value_Arr key form field = "+key);
document.getElementById(key).value = post_value_Arr[key];
}
}
</script>
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
var formObj = document.getElementById("pageID");
formObj.response_order_id.value = getParameterByName("name");
這是GET變量,OP特意詢問POST var並注意到他已經擁有GET變量。 – 2018-02-09 00:00:42
一個選項是設置在PHP中的cookie。
例如:
setcookie('invalid', $invalid, time() + 60 * 60 * 24);
然後,在JS讀回出(使用JS Cookie插件)::
var invalid = Cookies.get('invalid');
if(invalid !== undefined) {
Cookies.remove('invalid');
}
命名
無效與
$invalid
值在1天后到期一個cookie
您現在可以在JavaScript中訪問invalid
變量中的值。
雖然結論是正確的(你無法從javascript獲取數據),但推理是錯誤的。客戶端(瀏覽器)首先將POST數據發送到服務器。所以客戶非常清楚這些數據是什麼。實際原因很簡單,就是瀏覽器不會將這些數據提供給javascript(但它完全可以)。 – GetFree 2013-06-12 23:23:32
@GetFree:這個所謂的POST變量知識給Web開發人員有什麼好處?沒有一個Web開發人員會編寫一個客戶端腳本,這個腳本可能會使JavaScript的發佈數據可用,正如你指出的那樣,它*在實踐中從未發生過。因此,在現實世界*中,這裏給出的答案是正確的,也是我自己的。 – 2013-06-13 04:16:33
@PlatinumAzure,我不確定你是否明白這一點。您說服務器中存在POST數據,並且由於JavaScript在客戶端運行,因此JS無法訪問該數據。這是錯誤的,POST數據既存在於客戶端,也存在於服務器中,JS之所以無法訪問這些數據,僅僅是因爲客戶端(瀏覽器)並未使其可用於JS。就如此容易。 – GetFree 2013-06-13 18:41:05