2010-04-26 182 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