Javascript 如何从Perl CGI程序发送JSON响应?
我正在编写一个来自perl/cgi程序的JSON响应。标题的内容类型需要是“application/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
我将使用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框架的请求中设置头,因为打印头不一定有效。