使用JQuery调用python脚本

Call python script with JQuery

本文关键字:脚本 python 调用 JQuery 使用      更新时间:2023-09-26

能否有人请给出一个简短的代码示例,说明如何使用JQuery从Javascript调用python脚本并解析结果,这是一个python字典?

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>

你的PHP看起来不错。问题可能出在你的javascript代码中。obj变量未定义。必须提醒数据。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>

将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将工作。(刚刚在我的系统上测试过)

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

success: function(data){
     alert(data.val1);
}

你不能在PHP中echo一个数组,它只是打印"数组"(如你所注意到的)。您需要这样的代码来打印存储在数组中的每一行:

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

此外,正如在注释中建立的那样,Python脚本必须实际输出您想要传递给PHP的内容,以便exec()可以收集它。你不能使用return从Python传递数据到PHP