0

我正在尝试编写一个使用 JQuery 调用 python 脚本的简单 Web 应用程序。python 脚本以 JSON 格式返回数据。这是我的 Javascript 中的 ajax 调用:

console.log('before');

$.ajax({
    dataType: "json",
    url: "simple.py",
    success: function() { alert("Success"); },
    error: function(request, error) { console.log(request); }
});

console.log('after');

这是我的python脚本:

#!/usr/bin/env python
import json

l = "hello"
print json.dumps(l)

当我运行 Javascript 时,我得到一个“内部服务器错误”。如果我在 ajax 调用中将 dataType 更改为“脚本”或更改printreturn.

当我改为使用像这样的纯 JSON 文件时,我从网上的一些示例中获得:

{
  "one": "Singular sensation",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
}

dataType: "json"url: "test.json"它工作正常。当我使用 python 脚本打印出一堆 HTML 而不是 JSON 时,它也可以正常工作。当我从命令行自行运行 simple.py 时,它会以应有的方式打印出结果,就好像没有任何问题一样。但是,由于某种原因,我的 JQuery 不会接收 JSON 数据。在 Web Inspector 的“Network”下,simple.py 的类型被列为 text/html,这似乎不正确。我认为这应该是 application/json 但我不确定如何更改它。

我正在使用 Mac OSx 附带的 Apache2 服务器,并且我已将所有网站文件放在 Library/WebServer/Documents 下。我正在通过“localhost”网址访问我的网站。

日志中的错误:

(8)Exec format error: exec of '/Library/WebServer/Documents/UBCNetworks/simple.py' failed, referer: localhost/UBCNetworks/index.html
 .... Premature end of script headers: simple.py, referer: localhost/UBCNetworks/index.html 
4

1 回答 1

2

解决了这个!我必须将以下行添加到我的 python 脚本中:

print "Content-type: application/json\n\n";

这显然是“脚本头过早结束”错误的意思......这是缺少的脚本头。我的 javascript 现在打印出“成功!” 以及“hello”,python 脚本返回的 JSON 对象。在 Web Inspector 中,simple.py 的类型现在是 application/json 而不是 text/html。

(感谢巴尔玛的帮助!)

于 2013-05-10T20:38:00.107 回答