【发布时间】:2012-08-29 20:27:10
【问题描述】:
所以问题来了,我有一个 index.php(包含所有 php 代码),我有一个包含所有 html 内容的 index.tpl 文件。但现在因为我使用的是 ajax,所以我有另一个 php 文件应该输出一些数据(data.php)。问题是我不知道如何在 data.php 文件中选择模板,我只知道index.php 我有一个显示tpl ($Smarty->display($filename); 的函数但我不想显示data.php 文件中的模板(再次)我只想分配一些需要在 index.tpl 上显示的变量
编辑:
好的,这会很长: 首先,我需要解释我想要完成什么。我有 index.php 和 data.php。 index.php:
<?php
include("../include/config.php");
include("../include/functions/import.php");
$thebaseurl = $config['baseurl'];
$query ="SELECT name FROM contacts";
$results = $conn->execute($query);
$select-names = $results->getrows();
STemplate::assign('select-names',$select-names);
$templateselect = "index.tpl";
STemplate::display($templateselect);
?>
index.tpl 有点长,所以我将发布重要部分:
xmlhttp.open("get","data.php?q="+str,true);
这是 AJAX 代码,此代码将 GET 方法中的 +str 值发送到 data.php 文件,然后使用该值并从数据库中提取一些数据。
数据.php:
$q=$_GET["q"];
$sql="SELECT * FROM contacts WHERE name = '$q'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
$name = $row['name'];
}
STemplate::assign('name',$name);
$templateselect = "index.tpl";
STemplate::display($templateselect); //the second display
?>
我在这里使用 STemplate 的那个类作为 smarty 函数,但你知道代码是什么。
我希望你明白现在的问题是什么。如何在不再次显示模板文件的情况下将变量分配给模板。这样 $name 变量可以在 index.tpl 中访问(名称从 db 中显示)但由于 data.php 中的显示功能,整个内容再次显示。
【问题讨论】:
-
要么我误解了这个问题,要么你问的是不可能的。您想让 ajax 调用的 data.php 刷新显示的页面吗?内容如何显示两次?请出示您的 JavaScript 代码。