3

我想我应该在继续我的脚本项目之前问这个问题,后来意识到我可能做错了什么。不妨首先通过检查我正在做的事情是否确实正确来节省我自己的时间。

我对 PHP 和 JQuery 还很陌生,但仍然掌握了它们的窍门。我最近遇到了一个问题,我想在使用 JQuery 执行某个函数后运行一些 PHP 代码,所以在网上阅读了一些内容后,我想到了创建一个 PHP 文件来执行我想做的事情并 POST 到它来自我的带有所需变量的 JQuery 函数。这样我就可以同时实现我的服务器端和客户端目标。然而!

我觉得不合适。完全没有。我发现自己至少有十个包含一个简单页面的文件。当表单加载时,这些文件会包含在我的 HTML 代码中,并且在使用我的 JQuery 函数刷新某个 DIV 后,它们会被重新加载。这样我就可以让我的脚本保持动态,我怀疑我可以做些什么来保持这种状态。

但是我经常需要在执行某个 JQuery 函数后更新内容,因此我调用了一个与加载文件类似的文件,但这次是我将一些参数传输到的文件(使用 POST 方法,通过 JQuery),并执行文件本身中所需的操作。

现在,在简要说明了我目前的情况和工作方法之后,我想知道我所做的是否正确。如果您仍然想知道我在说什么,我想详细解释一下我的意思:

假设我有我的 index.php 文件,它打印来自我的数据库的数据和一些额外的行。一旦我单击页面按钮之一,我想根据我已经植入页面的表单更新我的数据库,然后重新加载仅包含该数据的 DIV。我不想重新加载整个页面。

现在,如果我想在没有 JQuery 的情况下做到这一点,那将很容易。如果 POST 参数确实有效,我会将数据发布到相同的表单并更新它。但是,没有 JQuery 就无法刷新该 DIV,所以我想出了类似的东西:

$.post("/files/dosomething.php", { taskID:    _taskID }, function(){
    $("#div_tasks").fadeOut(800, function(){
        $('#div_tasks').load('/files//load_div_A.php', function(){
            $("#div_tasks").fadeIn(1500);
        });
    });
});

这就是我在上周学习 PHP 和 JQuery 时一直在做的事情。现在在我继续进行之前,我想知道这是否确实是实现我的目标的正确方法。

// 示例 B:

例如,我的 HTML 代码中有一个 DIV,用于打印任务表。如何打印?我包含一个文件,它在我希望显示表格的确切位置回显表格。然后,在每一行中,都有一个名为“删除”的按钮,用于从数据库中删除选定的行。我所做的是,使用 JQuery(由于我只希望刷新该 DIV),我调用另一个外部文件调用 remove.php 并发送我想使用 POST 删除的任务的索引。该文件执行服务器端代码,完成后,我通过调用我首先从我的主页调用的文件将更新的表加载到该 DIV 中。这次表将被更新,因为它将从数据库中读取更新的数据。

我就是这样完成的吗?这是正确的方法吗?这对我来说似乎不合适。我从来没有这样编码,看起来有点乱。

在此先感谢,并为长屁股的问题感到抱歉。

4

2 回答 2

1

如果我正确理解了这个问题。我认为将(使用 jQuery)发布到另一个执行您想要执行的操作并且只返回您想要的结果(html/json 数据)的脚本会更容易。现在,您正在向服务器发出两个请求,这些请求似乎是捆绑在一起的。

我的建议是调用一个 PHP 脚本来执行您想要执行的特定操作(例如更新新闻项目)。然后仅在您的响应中返回该数据,然后使用 jQuery 在您的 div 中格式化该数据。

$.post("/files/writetodatabase.php", { taskID:    _taskID }, function(data){
    $('#div_tasks').html(data) // this is assuming you return html, other wise you // could return JSON data and use it here
});

我试图尽可能清楚地说明这一点,打字时很难解释。

于 2013-06-02T02:02:31.483 回答
1

您描述的问题正是关注点分离模式(如 MVC)旨在解决的问题。

在您的情况下,从显示实例到显示实例,唯一改变的是必须如何格式化响应并将其提供给用户。

我强烈建议您为您的项目查看一些更流行且文档齐全的 MVC 框架(或者如果只是为了玩耍和从中汲取灵感,其中大多数和一些非常容易遵循的入门教程,您可以在一个小时左右)。

在我看来,您正在以与这些方法兼容的思维方式看待问题,并且您可能觉得这很笨拙,主要是因为您缺少这些框架提供的许多结构和工具。

于 2013-06-02T03:34:48.593 回答