你好我有一个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);
?>
并且myscript.py
内的代码是:
#!/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
作为Ajax结果,我得到:Array
当我从控制台运行php代码时:php callpython.php
它执行python脚本,它给了我:["Content-type: text\/html","","30","37","47","20","27","40","20","#91806F"]
但是当使用ajax Firebug调用同一个php文件时,我显示:[]
结果。
那么请问我如何在Ajax调用中获得与控制台结果相同的结果?
感谢。
答案 0 :(得分:2)
作为第一步,我会尝试从python输出json。你从python目前得到的是一堆行(单个字符串),而不是一个有效的json可编码列表。此外,您不需要数据中的Content-Type,因为它是在HTTP中使用的标头。相反,试试这个:
<强> PYTHON 强>
import json
...
data_out = [eyeSize, displacementX, ...]
print json.dumps(data_out)
<强> PHP 强>
exec("python myscript.py",$return);
echo $return;
答案 1 :(得分:0)
尝试设置标题如下,
header("Content-Type: application/json; charset=utf-8", true);
echo json_encode($response);