使用JQuery从python脚本检索JSON时出现内部服务器错误

时间:2013-05-10 19:10:04

标签: jquery python json apache2

我正在尝试编写一个使用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更改为“script”,或者将print更改为return,则会发生同样的情况。

当我改为使用像我这样的普通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中,在“网络”下,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 

1 个答案:

答案 0 :(得分:1)

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

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

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

(感谢Barmar的帮助!)