使用AJAX调用从PHP运行Python脚本

使用AJAX调用从PHP运行Python脚本,php,python,ajax,cgi-bin,Php,Python,Ajax,Cgi Bin,您好,我有一个python脚本,我正试图使用如下AJAX调用从客户端从PHP运行该脚本: $.ajax({ async: false, cache:false, url:"callpython.php", type: "POST", data: "data1=" + path + "&data2=" + clr[k0], success: function (response) { console.log(response); }}); callpython.php中的代码是: &

您好,我有一个python脚本,我正试图使用如下AJAX调用从客户端从PHP运行该脚本:

$.ajax({
async: false,
cache:false, 
url:"callpython.php",
type: "POST",
data: "data1=" + path + "&data2=" + clr[k0], 
success: function (response) {
console.log(response);
}});
callpython.php
中的代码是:

<?php
exec("python myscript.py",$return);
echo json_encode($return);
?>
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import string
import cgi, cgitb
from lxml import etree
from PIL import Image

pet="images/rock1.png"
petColor="59A678"
.//The rest of the code that populates the variables printed down below
.
.
.
print "Content-type: text/html"
print 
print eyeSize
print displacementX
print displacementY
print distance
print textX
print textY 
print sizeText
print colorText
结果我得到:
Array

当我从控制台运行php代码时:
php callpython.php
它执行python脚本,并给出:
[“内容类型:text\/html”,“Content type:text\/html”,“Content-type:text\/html”,“Content-type:text\/html”,“Content-type:text\/html”,“Content-type:text\/html”,“Content-type:text\/html”,“Content-type:Content-type:text\/html”,“Content-type:Content-type:text\/html
但是当使用ajax Firebug调用同一个php文件时,我看到:
[]

那么,我如何才能在Ajax调用中获得与控制台结果相同的结果呢


谢谢

作为第一步,我将尝试从python输出json。目前,您从python获得的是一堆行(单个字符串),而不是一个有效的json可编码列表。此外,您不需要数据中的内容类型,因为它是HTTP中使用的头。相反,请尝试以下方法:

PYTHON

import json
...
data_out = [eyeSize, displacementX, ...]
print json.dumps(data_out)
PHP

exec("python myscript.py",$return);
echo $return;

尝试如下设置标题

header("Content-Type: application/json; charset=utf-8", true);
echo json_encode($response);

您好,谢谢您的回复,我按照您的建议做了,现在在控制台上运行php脚本时,我得到:
[“[\'30\”、“'37\”、“'47\”、“'20\”、“'27\”、“'40\”、“\'91806F\”]”]
,现在AJAX调用给我的是:
Array
,而不是
[]
,所以问题仍然没有解决。您好,我修复了它,这是我的python代码中的一个错误,我使用了
passthru()
函数而不是
exec()
标题(“内容类型:text/html”);echo passthru(“python-eyes/cgi-bin/eyes.py”)您好,很抱歉,我得到了与以前相同的结果:
[]