-1

有人可以给出一个简短的代码示例,说明如何使用 JQuery 从 Javascript 调用 python 脚本并解析结果,即 Python dict?低于我到目前为止所拥有的,但不起作用。

Python代码(script.py):

def pythonFuntion():
dict = {"val1":"this is x", "val2":True}
return json.dumps(dict)

中级 PHP (intermediate.php):

<?php
  exec("python script.py", $output);
  echo $output;
?>

Javascript:

  <script type="text/javascript" src="jquery-1.8.3.js"></script>
  <script type="text/javascript">
   $.ajax({
    url: 'intermediate.php',
    type: 'POST',
    dataType: "json",
    success: function(data){
         alert(obj.val1);
    }
   });
  </script>
4

4 回答 4

2

你的 PHP 看起来不错。问题可能出在您的 JavaScript 代码中。您的obj变量未定义。您必须提醒data.val1而不是obj.val1

<script type="text/javascript" src="jquery-1.8.3.js"></script>
  <script type="text/javascript">
   $.ajax({
    url: 'intermediate.php',
    type: 'POST',
    dataType: "json",
    success: function(data){
         alert(data.val1);
    }
   });
  </script>
于 2013-03-25T09:00:48.993 回答
2

将python文件更改为:

import json
def pythonFuntion():
    dict = {"val1":"this is x", "val2":True};
    return json.dumps(dict);
print( pythonFuntion() );

然后,在 PHP 中;用这个:

<?php
  exec("python script.py", $output);
  echo $output[0];
?>

你的 jQuery 就可以了。(刚刚在我的系统上测试过)。

于 2013-03-25T09:27:19.947 回答
1

可能是success函数出了什么问题,把obj改成data:

success: function(data){
     alert(data.val1);
}
于 2013-03-25T09:01:34.940 回答
0

你不能echo在 PHP 中使用数组,它只是打印“Array”(如你所见)。你需要这样的东西来打印存储在数组中的每一行:

exec("python script.py", $output);
echo implode( "\n", $output );

此外,正如评论中所确定的,Python 脚本必须实际输出您想要传递给 PHP 的内容,以便exec()可以收集它。您不能使用return将数据从 Python 传递到 PHP。

于 2013-03-25T09:12:17.650 回答