Working with PHP and JQuery


Working with PHP and JQuery

我想我应该在继续我的脚本项目之前问这个问题,然后意识到我可能做错了什么。不妨先检查一下我所做的是否真的正确,这样可以节省我自己的时间。

我对PHP和JQuery还很陌生,对它们都很熟悉。我最近遇到了一个问题,我想在使用JQuery执行某个函数后运行一些PHP代码,所以在网上阅读了一些内容后,我萌生了创建一个PHP文件的想法,该文件正是我想做的事情,并使用所需的变量从JQuery函数POST到它。这样我就可以同时实现服务器端和客户端的目标。然而

我觉得一点也不对劲。我发现自己在一个简单的页面上至少有十个包含文件。当表单加载时,这些文件会包含在我的HTML代码中,在用JQuery函数刷新某个DIV后,它们会被重新加载。这样我就可以保持我的剧本的动态,我怀疑我还能做些什么来保持它的动态。

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

现在,在简要解释了我的现状和工作方法后,我想知道我所做的是否正确。如果你还想知道我到底在说什么,我想详细解释一下我的意思:

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

现在,如果我想在没有JQuery的情况下做到这一点,那就很容易了。我会将数据POST到相同的表单,如果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中。这一次表将被更新,因为它将从数据库中读取更新的数据。

我就是这样做的吗?这是正确的路吗?我觉得这不对。我从来没有那样溺爱过,而且看起来有点乱。

提前谢谢,很抱歉问了这么长的问题。

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

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

我强烈建议您为您的项目查看一些更受欢迎且文档记录良好的MVC框架(或者,如果不需要其他东西,只需要玩一下并从中汲取灵感,那么其中的大多数以及一些非常容易遵循的入门教程,您可以在一个小时左右完成(。

在我看来,你是在以与这些方法兼容的心态看待这个问题的,你可能会觉得很笨拙,主要是因为你缺少了这些框架提供的许多结构和工具。

如果我正确理解了这个问题。我认为(使用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
});

我尽量把它说清楚,打字时很难解释。