是否需要使用ajax的视图?

时间:2018-02-22 00:07:25

标签: ajax django

我正在将网站迁移到django,其中一部分是对php脚本的一些ajax调用。我从ajax调用中得到的所有内容都是php文件的内容,而不是正在执行的脚本的结果。

不确定这是因为我只使用django dev服务器(项目不在apache处理的文件夹中),或者我需要url.py和views.py条目进行ajax调用...

我的js文件中的ajax调用:

function getLab(labId) {
  let data = new Object();
  data['ID'] = labId;
  $.ajax({
    url: "/static/php/fetchLab.php",
    type: "get",
    data: data,
    success: getLabFinish
  });
}

响应是php文件的内容:

<?php
  require('/static/php/log.php');
  require('/static/php/config.php');
  $log = new Log();
  ...

2 个答案:

答案 0 :(得分:0)

为了实现这一点,必须采用这个PHP脚本并将它们传递给PHP解释器。否则,您会收到脚本作为文本,因为服务器会像这样威胁它们。使用未正确配置PHP的Web服务器提供PHP文件时,可能会遇到相同的效果。

你对apache的猜测并没有错。您可以配置本地apache并启用PHP模块以接收其所需的输出。

迁移时这种方法可能就足够了,但绝对不建议您迁移。

作为一种解决方法,您还可以使用虚拟输出替换PHP脚本,并将它们提供在静态文件夹中。这样,您就可以准备应用程序的其他部分并在以后进行迁移。

如前所述,您希望在django项目中获得相应的视图。

答案 1 :(得分:0)

我同意dahrens和Jerin Peter George所说的话。听起来好像你没有在服务器上安装PHP,这在python / django环境中是不需要的。因此,ajax请求从php文件中获取文本。

我将为您添加一些上下文,以了解django 2.x中ajax请求和响应的含义

你的javascript(前端)中的

    $.ajax({
           url: '/save/json/',
           method: 'POST',
           data: {"data":"content"}
   })
在您的views.py中

def save_json(request):
    if request.is_ajax():
        if request.method == 'POST':
            incoming_json_data = json.loads(request.body)
            # DO STUFF WITH THE JSON DATA
    HttpResponse("OK")
你的urls.py中的

urlpatterns = [
    path('save/json/', views.save_json),
]