我正在将网站迁移到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();
...
答案 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),
]