Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Perl CGI程序发送JSON响应?_Javascript_Perl_Json - Fatal编程技术网

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

Javascript 如何从Perl CGI程序发送JSON响应?,javascript,perl,json,Javascript,Perl,Json,我正在编写一个来自perl/cgi程序的JSON响应。标题的内容类型需要是“application/json”。但它似乎没有被识别,因为响应是作为文本文件抛出的 我将使用jQuery的JSON库捕获响应。我在发送JSON响应时遗漏了什么 即使您指定了类型“application/json”,您仍然需要解析文本。jQuery使用$.getJSON函数为您完成此操作,即: $.getJSON("http://someurl.com/blabla.json",{some: "info"},functi

我正在编写一个来自perl/cgi程序的JSON响应。标题的内容类型需要是“application/json”。但它似乎没有被识别,因为响应是作为文本文件抛出的


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

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

$.getJSON("http://someurl.com/blabla.json",{some: "info"},function(json){
  alert(json["aKey"]["anotherOne"]);
});
(在这里)


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

我在一个perl/cgi程序中做这件事

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

use CGI qw(:standard);
use JSON;
然后我打印json头:

print header('application/json');
这是一种内容类型:

Content-Type: application/json
然后我像这样打印JSON:

my $json->{"entries"} = \@entries;
my $json_text = to_json($json);
print $json_text;
   $.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() {
        }
    });
我的javascript调用/处理方式如下:

my $json->{"entries"} = \@entries;
my $json_text = to_json($json);
print $json_text;
   $.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变得非常容易。

以下是如何在perl的web框架中生成请求。

Mason类似于挂架或Ruby On Rails


你是如何发送回复的?你在用CGI.pm吗?是的。我用了第三个答案。无论如何,谢谢你应该接受第三个答案(点击复选标记)。显示你已经尝试过的示例代码通常很有用。:)还有第三个答案吗?我的JSON有错误。非常感谢,这就像一个charmYou应该使用'application/json'作为头,并找到一些方法在web框架的请求中设置头,因为打印头不一定有效。