单击div加载php函数(或更好的解决方案)

单击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

好的,伙计们。我需要一些帮助。或者是更好的方法。当有人单击div id O+$row['id']将加载函数displayops和一些如何传递参数时,我需要进行设置。我可以处理未传递的$row['name'],在这种情况下,$pastOp将始终=TRUE。如果可能的话,我需要在不重新加载页面的情况下完成它

我之所以需要这样做,是因为同时为所有这些应用程序运行它几乎需要5-10分钟才能完全加载,而不需要加载所有应用程序。正是人们需要点击的那些。非常感谢您的帮助

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);