代码之家  ›  专栏  ›  技术社区  ›  Saif Bechan

AJAX和非AJAX操作的不同类和配置

  •  0
  • Saif Bechan  · 技术社区  · 15 年前

    我有一个网站,人们可以出价的产品。因此,我做的第一件事是创建一个正常的HTML-PHP版本的网站,这是伟大的作品。

    我创建了一些基本的PHP函数,可以查看url->将您路由到控制器->执行操作->获取POST对象等。

    现在我已经为这个动作实现了一个AJAX版本,但是我想知道我是否做了正确的事情。

    我创建了一个名为ajax的新文件夹,并在那里为ajax请求创建了一个新控制器。现在,当有人单击“bid”时,请求被Javascript劫持并发送到AJAX控制器。现在在AJAX控制器中,我去掉链接,然后加载控制器和模型,工作由类完成。

    现在,对于AJAX版本和HTML版本,类必须返回的响应是不同的。在这个类的代码中,我有这样的东西

    if(ajax version){
        give ajax response
    }else{
        give html response
    }
    

    现在班级里有更多不同的东西。

    现在我的问题是,ajax和非ajax函数可以使用相同的类和配置文件,还是必须分开使用。

    或者有没有更优雅的方式来解决这个问题,也许是使用接口。

    4 回复  |  直到 15 年前
        1
  •  0
  •   Codemwnci    15 年前

    如果您正确地遵循MVC模式(从您的描述中看起来是这样的),那么每个请求应该有不同的操作。

    • 接收AJAX请求的不同URL和操作
    • 在模型中执行业务逻辑

    通过在共享控制器中使用switch(if语句),您可能会在控制器中添加逻辑,从而降低代码的可重用性。

        2
  •  0
  •   Delan Azabani    15 年前

    一种简单的方法是在使用AJAX时在请求中设置GET或POST参数,例如 ajax=1 然后在PHP中检查:

    if (isset($_GET['ajax'])){
        give ajax response
    } else {
        give html response
    }
    
        3
  •  0
  •   Harmen    15 年前

    AJAX请求有一个头 HTTP_X_REQUESTED_WITH XMLHttpRequest

    例如:

    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'){
      // Ajax
    } else {
      // Normal request
    }
    
        4
  •  0
  •   Quentin    15 年前

    根据经验,通常最好保持相同的模型和控制器,并根据请求中的数据(例如查询字符串中的值,或X-Requested-By之类的自定义头)切换视图(可能在HTML模板视图和JSON视图之间)。