2013-03-25 131 views
-2

有人可以给一个简短的代码示例,了解如何使用JQuery从Javascript调用python脚本并分析结果,这是一个Python字典?在我到目前为止,但不起作用。用jQuery调用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> 
+0

不确定,但不要Python函数需要适当的缩进吗? – hjpotter92 2013-03-25 08:56:27

+1

_doesn't work_意味着什么?任何错误消息? – 2013-03-25 08:57:45

+0

我看不到任何逻辑错误。你确定路径是正确的吗? – 2013-03-25 09:00:32

回答

0

你不能echo PHP中的数组,它只是打印“阵列”(如你注意到)。你需要像这样打印存储在阵列中的每一行:

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

另外,确立的意见,Python脚本必须实际输出你想要的东西传递给PHP,这样exec()可以收集它。您不能使用return将数据从Python传递到PHP。

2

你的PHP的样子OK。问题可能出现在您的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> 
1

也许是成功的功能出了什么问题,改变OBJ数据:

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

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