2011-04-01 191 views
-1

我在我的javascript塊中有一個元素,它的值我想傳遞給php。 變量是Yii:將Javascript變量傳遞給PHP

$( '#DATEFIRST')。VAL()

$( '#datelast')。VAL()

我的代碼是(應該知道我在說什麼)

<?php $datefirst = ?>$('#datefirst').val(); 
<?php $datelast = ?>$('#datelast').val(); 
window.location = "<?php echo CController::createAbsoluteUrl('export/motheradmission', 
array('datefirst'=>$datefirst,'datelast'=>$datelast)) ?>"; 

任何想法都能幫助我完成這一壯舉?

+2

請查看[服務器端/客戶端](http://www.eggheadcafe.com/PrintSearchContent.asp?LINKID=569)。 – 2011-04-01 10:06:54

回答

2

PHP在服務器上運行。它(通常)會生成一個HTML文檔(可能帶有嵌入式JavaScript)。然後傳送給客戶。此時PHP腳本已經完成。

客戶端獲取文檔並運行任何JavaScript。

將數據返回給服務器的唯一方法是發出一個新的HTTP請求。

你可能想這樣做:

window.location = "some.php?datefirst=" + encodeURIComponent(datefirst) + "&datelast=" + encodeURIComponent(datelast); 

...,然後處理在some.php提交的數據。

+0

由於原始腳本將瀏覽器重定向到另一個URL,所以Ajax會使這個事件沒有任何好處。 – Quentin 2011-04-01 10:07:52

0

鑑於您使用window.location將它們反射到新頁面,爲什麼不繼續使用JavaScript並將變量添加到您要反彈的URL的末尾?如

Window.location = "<code>"+"?datefirst"+('#datefirst').val()+"&datelast="+('#datelast').val(); 
0

您不能將js值分配給php。 你可以像這樣實現重定向。

var firstdate=$('#datefirst').val(); 
var lastdate=$('#datelast').val(); 
var url = "<?php echo CController::createAbsoluteUrl('export/motheradmission', 
array('datefirst'=>'#firstdate','datelast'=>'#lastdate')) ?>"; 
url = url.replace('#firstdate',firstdate); 
url = url.replace('#lastdate',lastdate); 
window.location.href=url;