首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Perl CGI程序发送JSON响应?

如何从Perl CGI程序发送JSON响应?
EN

Stack Overflow用户
提问于 2009-01-12 13:48:10
回答 2查看 47.6K关注 0票数 20

我正在编写来自perl/cgi程序的JSON响应。头部的内容类型需要为"application/json“。但是它似乎不被识别,因为响应是作为文本文件抛出的。

我将使用jQuery的JSON库捕获响应。在发送JSON响应时,我遗漏了什么地方。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-12 14:20:29

我是在perl/cgi程序中这样做的。

我在我的代码顶部使用了以下代码:

代码语言:javascript
复制
use CGI qw(:standard);
use JSON;

然后我打印json头文件:

代码语言:javascript
复制
print header('application/json');

它是以下内容的类型:

代码语言:javascript
复制
Content-Type: application/json

然后我像这样打印出JSON:

代码语言:javascript
复制
my $json->{"entries"} = \@entries;
my $json_text = to_json($json);
print $json_text;

我的javascript调用/处理如下:

代码语言:javascript
复制
   $.ajax({
        type: 'GET',
        url: 'myscript.pl',
        dataType: 'json',
        data: { action: "request", last_ts: lastTimestamp },
        success: function(data){
            lastTs = data.last_mod;
            for (var entryNumber in data.entries) {
                 //Do stuff here
            }
        },
        error: function(){
            alert("Handle Errors here");
        },
        complete: function() {
        }
    });

如果您不想安装JSON库,则不必使用它,您可以直接打印JSON格式的文本,但它使得将perl对象转换为JSON非常容易。

票数 28
EN

Stack Overflow用户

发布于 2009-01-12 14:11:58

即使您指定类型为"application/json“,您仍然需要解析文本。jQuery使用$.getJSON函数为您完成此操作,即:

代码语言:javascript
复制
$.getJSON("http://someurl.com/blabla.json",{some: "info"},function(json){
  alert(json["aKey"]["anotherOne"]);
});

(这里是specs)。

但也许你已经意识到了这一点,所以问题出在其他地方:你能告诉我们一个你的json响应的样本吗,因为可能问题是它是无效的。我真的不明白为什么你说“似乎没有被识别”:当我编写json服务时,我做的第一个测试是在浏览器上调用它们,也许会触发firebug并尝试解析它(所以,是的,响应是一个文本响应,但javascript解析它并返回一个json对象仍然很高兴)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/435442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档