gpt4 book ai didi

javascript - Ajax 通信 : Malformed JSON string in Perl

转载 作者:行者123 更新时间:2023-11-29 21:38:17 25 4
gpt4 key购买 nike

我想通过 XMLHttpRequest 将 JSON 对象发送到 Perl 脚本 (*.cgi)但我无法解码 cgi 文件中的 JSON 对象。

我总是收到错误信息:

malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)")

这是我的 javascript 代码:

//ajax communication for receiver/transceiver 
function doAjaxRequest(query)
{
if(whatReq == "")
{
alert('ERROR: Request-Type undefined');
return;
}

if (window.XMLHttpRequest)
{
arequest = new top.XMLHttpRequest(); // Mozilla, Safari, Opera
}
else if (window.ActiveXObject)
{
try
{
arequest = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
}
catch (e)
{
try
{
arequest = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
}
catch (e)
{
alert('ERROR: Request not possible');
return;
}
}
}

if (!arequest)
{
alert("Kann keine XMLHTTP-Instanz erzeugen");
return false;
}
else
{
var url = "****.cgi";

var dp = document.location.pathname;

arequest.open('post', url, true);
arequest.setRequestHeader("Content-Type", "application/json;charset=UTF-8");

//receiver function
arequest.onreadystatechange = function()
{
switch (arequest.readyState)
{
case 4:

if (arequest.status != 200)
{
alert("Der Request wurde abgeschlossen, ist aber nicht OK\nFehler:"+arequest.status);
}
else
{
var content = arequest.responseText;
analyseResponse(content);
}
break;

default:
//alert("DEFAULT:" + arequest.readyState );
break;
}
}
//transceiver function
query="jsonObj=" + JSON.stringify({name:"John Rambo", time:"2pm"});
alert(query);
arequest.send(query)
}
}

这里是cgi文件:

#!/usr/bin/perl

use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
use strict;
use warnings;
use JSON;
use Data::Dumper;

my $jsonObj = param('jsonObj');
my $json = JSON->new->utf8;
my $input = $json->decode( $jsonObj );

print Dumper(\$input);

你能帮帮我吗?我不知道如何访问 JSON 对象。

非常感谢。

最佳答案

此消息表示您在 $jsonObj 中有非 JSON 字符串。一个特别常见的情况是空字符串。尝试打印出 $jsonObj 的原始内容,并确保为 CGI::param 正确设置所有内容,并检查浏览器的内置工具是否实际发送数据.

此外,我强烈建议您扔掉 10 年前的 ActiveX 狗屎。您正在使用 JSON.stringify,所有支持它的浏览器也支持原生 XMLHttpRequest

关于javascript - Ajax 通信 : Malformed JSON string in Perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34204143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com