0

您好,我有一个 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 调用中获得与控制台结果相同的结果?

谢谢。

4

2 回答 2

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;
于 2013-07-21T05:55:02.833 回答
0

尝试如下设置标题,

header("Content-Type: application/json; charset=utf-8", true);
echo json_encode($response);
于 2013-07-21T07:39:08.377 回答