【问题标题】:How to call php into wordpress page ajax [closed]如何将php调用到wordpress页面ajax [关闭]
【发布时间】:2013-02-10 23:46:27
【问题描述】:

我正在制作一些页面,其中包含一些来自数据库的排序内容。 A已经对php进行了排序,我需要通过按钮适当地调用它,并且我需要将taht php输出写入已经在页面上的某个div。有可能吗?

排序.php

<?php
mysql_connect("localhost", "login", "pass") or die(mysql_error());
mysql_select_db("database");

$result = mysql_query("SELECT * FROM table ORDER BY added ASC");

while($row = mysql_fetch_array($result))
  {
  echo "<div class='something'>";
  echo "<a href='$row[link]'>";
  echo "<img src='$row[img]' height='125' width='125'/>";
  echo "<p>$row[name]</p></a></div>";
  echo "<br>";
  }
?> 

每种类型的排序或过滤器都将由不同的 php 处理。 这是如何制作这种页面的好方法吗?还是有一些更简单更好的方法? 还有一件事。选择不同类型的过滤器时是否可以进行一些转换?我想要这样的东西:quicksand

【问题讨论】:

    标签: php mysql ajax


    【解决方案1】:

    如果你可以在你的页面中包含 jQuery,它有一个简写的方法来做到这一点:.load()。你最终的 javascript 可能看起来像这样:

    $(document).ready(function() {
    
        $("#searchButton").bind('click', function() {
            $("#resultsDiv").load(
                'http://mysite.com/sorting.php',
                { // parameters, in object literal format
                   sortDir: 'asc',
                   sortCol: 'lastname'
                   // etc.
                }
            );
        });
    
    });
    

    您将 mysite.com、searchButton 和 resultsDiv 替换为您网站/标记的真实信息。您还可以使用 jquery 选择器从页面元素中获取排序参数,如下所示:$("#sortDir").val() - 假定一个文本框、文本区域或选择框。假设您的表单使用它们,还有其他方法可以检索复选框和单选按钮。要回答您的其他问题:

    1) 每种类型的排序或过滤器都将由不同的 php.ini 处理。这是如何制作这种页面的好方法吗?还是有一些更简单更好的方法?

    对于少数人来说并非不合理。不接受服务器上的任何参数是确保您永远不会允许恶意输入的一种方法。当您需要更改表名或您选择的列并且必须修改每个文件时,它往往会变得笨拙。您还需要意识到,如果您允许过滤器和排序的组合,那么您就是在谈论支持它们的交集。如果你有 3 个过滤器和 4 个排序,那就是 12 种组合。如果您想添加另一个排序和另一个过滤器,则必须为过滤器添加 4 个新页面和为排序添加 5 个新页面 - 而且每次都会变得更糟。

    大多数人会采取让所有数据都转到同一页面的方法,并且只有该页面负责验证用户输入、制定查询并返回结果。这种范式通常称为DRY for Don't Repeat Yourself。但是如果你接受用户输入,你需要非常小心validating it(在服务器端!Don't trust user input!)并且不允许例如一个SQL injectionattack

    2) 还有一件事。选择不同类型的过滤器时是否可以进行一些转换?我想要这样的东西:流沙

    那个特定的动画非常复杂。他们在为每个页面显示的图标之间运行差异,并以编程方式自定义要缩小、爆炸、移动等的图标。我可以更详细地了解如何自己做...

    但是你知道吗?它是一个插件,与 jQuery 1.3+ 兼容,并在 MIT 和 GPLv2 下获得许可,因此将它整合到您的站点中应该没有问题。检查docs 并自己尝试一下。我没有看到任何与排序您返回的标记类型本质上不兼容的东西。我确实注意到他们的示例使用li 标记进行排序,而您的示例返回使用div。但这不应该是一个重大的挂断,如果是,只需返回 lis 即可。当您在使用它时遇到问题,发布另一个问题,适当地标记它并准备发布您在这方面尝试过的所有内容。

    【讨论】:

    • 感谢您的帮助,它可以接受您的 .load() 缺少右括号,但这就是细节。还有一件事。我不知道那些 sortDir 和 sortCol 是干什么用的。你能给我解释一下吗?
    • 更正了输入错误,对此感到抱歉。 sortDir 和 sortCol 只是示例参数。您提到有多个页面用于不同的排序和过滤器。我传递的选项是传递到同一页面的示例。回到您的示例代码,sortCol 将被“添加”(因为这是您的 ORDER BY),而 sortDir 将是“ASC”(因为这是您的示例排序(订单)的方向)。
    • 是的,我也想过并尝试过,但它不起作用。我将其更改为 sortDir: 'asc', sortCol: ' added' 并没有任何反应。为了检查这是否可行,我尝试按添加排序,并命名为 asc 和 desc,但没有任何变化。
    • 我确定您需要修改您的 php 代码以接受这些参数。这是一个完全不同的问题。
    猜你喜欢
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多