2010-04-26 172 views
0

我正在研究當前在MySql數據庫中提供文檔列表的Web應用程序。列表中的每個文檔都有一個打開特定文檔的onclick事件,但是我無法執行此操作。如何將JS變量傳遞給PHP變量

我的列表使用Ajax進行填充。下面是代碼摘錄(JS):

function stateChanged() 
    { 
if (xmlhttp.readyState==4) 
    { 
    //All documents// 
    document.getElementById("screenRef").innerHTML="<font id='maintxt'; name='title'; onclick='fileopen()'; color='#666666';>" + xmlhttp.responseText + "</font>"; 
    } 
    } 
} 

以上的onclick =的FileOpen事件觸發下一個代碼摘錄,其中下載文件(JS):

function stateChanged() 
{ 
if (xmlhttp.readyState==4) 
{ 
    //Open file 
    var elemIF = document.createElement("iframe"); 
    elemIF.src = url; 
    elemIF.style.display = "none"; 
    document.body.appendChild(elemIF); 
} 
} 

}

最後, openfile onclick事件觸發以下php代碼來查找要下載的文件(php):

$con = mysql_connect("localhost", "root", "password"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("Documents", $con);  
$query = mysql_query("SELECT name, type, size, content FROM upload WHERE name = NEED JS VARIABLE HERE"); 
$row = mysql_fetch_array($query); 
header ("Content-type: ". $row['type']); 
header ("Content-length: ". $row['size']); 
header ("Content-Disposition: attachement; filename=". $row['name']); 
echo $row['content']; 

此代碼適用於下載文件。如果我省略Sql查詢的WHERE部分,onclick事件將下載第一個文件。不知何故,我需要得到screenRef元素文本,並將其更改爲我的php文件可以讀取的變量。有誰知道如何做到這一點?此外,沒有任何頁面刷新。

我非常感謝大家的反饋,並提前致謝。

DFM

+0

我建議你使用一個框架,如dojo或jQuery來做到這一點。 – 2010-04-26 16:14:16

回答

2

不能引用從服務器側(PHP)碼的客戶端(JS)的變量。

您需要將要顯示在文章中的文檔的ID傳遞迴服務器,方法是將其包含在查詢字符串或表單值中,並將其返回。

+0

感謝您的輸入 - 是否可以使用Ajax進行此操作,例如將xmlHTTP.responseText轉換爲變量或其他Ajax特定條件? – user175328 2010-04-26 15:58:50

+0

我想你正在考慮這個錯誤的方法。 AJAX仍然在客戶端上運行。 無論您發送的是通過Querystring到服務器(PHP代碼),然後處理PHP代碼,它將返回一個純HTML頁面。 只需通過ajax發送請求發送任何你想要的東西。 – 2010-04-26 16:15:47