有什么方法可以在我的PHP MVVM设计中使用jQuery? - php

背景知识:我来自.Net环境,在该环境中,我们必须在所有项目中使用MVVM才能将视图与视图模型分开。现在,我正在开发自己的个人PHP项目,因此我决定使用相同的设计,并将视图和视图模型分开。

因此,在视图上,我创建了一个viewmodel对象,并在必要时调用后台函数,并且在视图中,代码仅用于提供显示。

例:

view.php

<?php
include('viewmodel.php');

$vm = new viewmodel.php();

if(some condition)
{
  $vm->doSomething();
}
?>
<html>
<body>
//some form code
</body>
</html>

viewmodel.php

<?php
//includes

class viewmodel
{
  function viewmodel()
  {
  }

  function doSomething()
  {
  }
}
?>

既然我已经学习了jQuery,我想使用它来使我的页面更具动态性,来往服务器的来回流量减少,页面刷新的需求也减少。

我见过这样的调用,这些调用允许jQuery调用带有一些发布数据的php页面:

$.ajax({ url: '/my/site',
         data: {action: 'test'},
         type: 'post',
         success: function(output) {
                      alert(output);
                  }
});

但是,这不再是面向对象的设计,因此我必须从我的视图模型中删除所有的类定义才能起作用。

jQuery有什么方法可以对视图模型进行这些调用吗?或者使用jQuery是否意味着您必须返回程序化的编程风格?

参考方案

但是,这不再是面向对象的设计,因此我必须从我的视图模型中删除所有的类定义才能起作用。

什么让你有那个想法?向服务器发出AJAX请求并没有固有的面向对象或非面向对象的特性。这些源自客户端的请求也不会影响服务器端代码的体系结构。

在您的视图中,您可以拥有任何所需的JavaScript代码。它不会对呈现视图的服务器端代码产生影响,因为就所关注的JavaScript而言,它只是文本,与HTML并无不同。

对于服务器端处理程序,您可能想要做的就是为jQuery代码正在调用的“页面”(“资源”是一个更准确的词)创建全新的视图和视图模型。

因此,例如,您可能会从浏览器收到类似/my/site之类的请求,该请求将使用您现有的体系结构填充一个视图模型以绑定到一个视图,并将该视图返回给客户端。该视图将包含一些JavaScript代码,其中一些调用另一个资源。假设其他资源类似于/api/products,它返回用户可用的“产品”列表。

请注意,我将资源放在另一个路径下,即api而不是my。这是一个相当武断的决定,仅用于说明在这种情况下返回的内容不是“页面”,而是自动化API的JSON数据。当然,资源的实际名称可以是您喜欢的任何名称。

该资源仍然可以是视图并绑定到视图模型,但是在这种情况下,视图是JSON数据而不是HTML。像其他任何事情一样,您可以通过多种方式来执行此操作。 Google快速搜索出现another question,它讨论了生成JSON数据的两种方法之间的差异。确实,在这种情况下,您的“视图”可能完全是空的,您要做的只是将视图模型序列化为JSON并返回。 (我的PHP相当生锈,但是等效的ASP.NET MVC将返回ActionResultJson()而不是View()。)

请记住,从服务器端代码的角度来看,以HTML返回视图与以JSON(或XML,或原始文本,或其他任何方式)返回视图之间没有区别。视图是一个视图,每个视图彼此独立。

jQuery Ajax和php类 - php

我正在尝试学习如何在php中使用oop。我对jQuery也很陌生。是否可以向php类方法发出Ajax请求?我只将Ajax请求发送到专门用于此目的的文件,并且返回我需要的数据。 参考方案 简短答案:不可以。长答案:Ajax只是一个使用JavaScript从浏览器发出HTTP请求而无需离开页面的术语。您唯一可以“呼叫”的是URL。您可以编写PHP以根据URL来执…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php:将分钟取整到最近的四分之一小时,然后执行更多操作 - php

最初的问题是这样的:取分钟数->转换为四分之一小时-> 1个四分之一小时为1个单位->输出单位我今天整天都在整理页面,几分钟前我的大脑就停止工作了,我只是不知道如何输出单位数量。我知道在此网站上发布问题会有所帮助。因此,用户输入的分钟数(不是小时和分钟,而是数分钟),站点需要输出单位数量。单位是一个刻钟。分钟总是四舍五入到最近的四分之一小时…