单击div加载php函数(或更好的解决方案)
好的,伙计们。我需要一些帮助。或者是更好的方法。当有人单击div id O+$row['id']将加载函数displayops和一些如何传递参数时,我需要进行设置。我可以处理未传递的$row['name'],在这种情况下,$pastOp将始终=TRUE。如果可能的话,我需要在不重新加载页面的情况下完成它 我之所以需要这样做,是因为同时为所有这些应用程序运行它几乎需要5-10分钟才能完全加载,而不需要加载所有应用程序。正是人们需要点击的那些。非常感谢您的帮助单击div加载php函数(或更好的解决方案),php,jquery,function,html,Php,Jquery,Function,Html,好的,伙计们。我需要一些帮助。或者是更好的方法。当有人单击div id O+$row['id']将加载函数displayops和一些如何传递参数时,我需要进行设置。我可以处理未传递的$row['name'],在这种情况下,$pastOp将始终=TRUE。如果可能的话,我需要在不重新加载页面的情况下完成它 我之所以需要这样做,是因为同时为所有这些应用程序运行它几乎需要5-10分钟才能完全加载,而不需要加载所有应用程序。正是人们需要点击的那些。非常感谢您的帮助 while($row = $resul
while($row = $result->fetch_assoc()){
echo "<div style=\"clear: both;\"></div>\n";
echo "<div class=\"operation\">\n";
echo "<h2 class=\"opsList\" style=\"cursor:pointer;\"><img src=\"/js/assets/".$row['icon']."\"/><div id=\"O".$row['Id']."\">Past Operations for " .$row['Name'] ."</div></h2>\n";
echo "<div class=\"initiallyHidden\" id=\"P".$row['Id']."\">";
// displayops($row['Id'], $row['Name'], $pastOp);
echo "</div>";
echo "</div>\n";
}
您需要一个ajax操作,该操作将行id(可能的名称等)作为参数,并仅返回该行的内容。即运行displayops命令的 然后将以下内容用作主要php:
while($row = $result->fetch_assoc()){
echo "<div style='clear: both;'></div>\n";
printf( '<div class="operation" data-id="%2$s" data-name="%3$s">
<h2 class="opsList" style="cursor:pointer;">
<img src="/js/assets/%1$s"/>
<div id="O%2$s">Past Operations for %3$s</div>
</h2>
<div class="initiallyHidden" id="P%2$s"></div>
</div>',
$row['icon'],
$row['Id'],
$row['Name'] );
echo "</div>\n";
}
所有这些都未经测试,但希望您能理解。以下是与下面给出的信息相关的信息,除了我还没有实现任何JSON
东西,但我会:)
下面是我如何从数据库中获取一些PHP数据并以可读的形式存储,然后很容易将其转换为JSON并传递给视图。淘汰赛可以带走剩下的部分:
public function getAll() {
try {
$stmt = $this->database->queryUnprepared('SELECT * FROM products');
$_products = $stmt->fetchAll(PDO::FETCH_CLASS, "Product");
$stmt->closeCursor();
$this->error = FALSE;
return $_products;
}catch (PDOException $e){
$this->error = TRUE;
$this->message = $e->getMessage();
}
}
$this->database
只是一个包含PDO包装类的类变量,所有queryUnprepared
包装都是,$pdoConnection->query()
。PDO是可用的最好的数据库php类。事实上,您可以使用它连接到几乎任何数据库服务器。另外,我认为它比mysqli具有更好的功能。例如,您可以从数据库中提取所有行,并让PDO自动填充模型,这一事实非常完美
class Product {
public $id;
// etc model data
}
这就是产品类
这将为您提供各自型号的所有产品的详细列表。之后,只需将其封装在一个简单的json_encode()
,或者更好地扩展产品
类功能:
class Product {
public $id;
// etc model data
public function toJson() {
return json_encode(array('id' => $this->id)); // etc for all things
}
}
对于您的OPS列表,请执行以下操作:
class OpsModel {
public $Id;
public $name;
public $icon;
// etc extend etc
}
我假设要使其进入JSON
状态,只需执行以下操作:
foreach($_products as $product) {
array_push($jsonArray, $product->toJson());
}
$productJsonArray = json_encode($jsonArray);
然后是将其分配给javascript变量的简单情况:
var jsonArray=
那就跟着这个去淘汰赛吧
这样,我们将服务器端脚本留给服务器端,客户端脚本留给视图处理。更干净,更易于维护服务器端。您可以使用jquery实现这一点,我相信我可以使用jquery实现这一点。。但是如何。。什么。我到处搜索了如何加载php函数,但他们都希望它重新加载页面。我需要它不要重新加载页面。啊,我的道歉。我把我的答案删掉了,因为在这种情况下它对你没有帮助。我会设法想出一些对你有帮助的办法的。。我一直在谷歌上寻找实现这一点的方法,但很沮丧,我来到了这里。我现在还在搜索。我强烈建议使用数据绑定库(knockout)来显示PHP输出中的
JSON
,而不是使用PHP来呈现输出。这是关注点和清洁剂的适当分离。看,亚当,我试过这个例子,也尝试过一些,但是单击选项似乎有问题?部门有点不对劲,但我很快就修好了。。但是我的Jquery非常有限,虽然我了解它的功能。。我不能告诉你是否有语法错误。我确实添加了文档。准备好了吗id:$(this).data('id'),应该是data['id']和'Name',还是id:需要是id:?不管怎样,在做了更多的研究之后,我看到了id和类似的意思。但是我仍然无法让它工作。好的,我已经设法弄清楚在参数之后应该有一个,但是这个函数仍然不起作用。。我唯一能确定的想法是当我改变了方向。在initiallyHidden的第二个实例中,我得到了错误。。否则什么都不会发生。好吧,我已经缩小范围,要么打印的div错误,要么ajax调用没有调用php文件。还在调查中我发现了。。现在一切都好了,亚当。通过大量的研究,我能够修改您的代码,使其正常工作。我在问题中公布了结果。希望这能对将来的人有所帮助。while llop中的php部分只需要一些Div帮助。但一切都很好。
class Product {
public $id;
// etc model data
public function toJson() {
return json_encode(array('id' => $this->id)); // etc for all things
}
}
class OpsModel {
public $Id;
public $name;
public $icon;
// etc extend etc
}
foreach($_products as $product) {
array_push($jsonArray, $product->toJson());
}
$productJsonArray = json_encode($jsonArray);