格式错误的JSON字符串从AngularJS传递JSON时出错
malformed JSON string Error while passing JSON from AngularJS
我正在尝试在ajax请求中传递JSON字符串。这是我的密码。
NewOrder = JSON.stringify (NewOrder);
alert (NewOrder);
var req = {
url: '/cgi-bin/PlaceOrder.pl',
method: 'POST',
headers: { 'Content-Type': 'application/json'},
data: "mydata="+ NewOrder
};
$http(req)
.success(function (data, status, headers, config) {
alert ('success');
})
.error(function (data, status, headers, config) {
alert (status);
alert (data);
alert ('Error')
});
警报(NewOrder)给出-
{"ItemList":[{"ItemName":"Quality Plus Pure Besan 500 GM","Quantity":1,"MRP":"28.00","SellPrice":"25.00"}],"CustomerID":1,"DeliverySlot":2,"PaymentMode":1}
这似乎是一个有效的JSON字符串。
但在脚本方面,我得到了以下错误。在这条线上
my $decdata = decode_json($cgi->param('mydata'));
格式错误的JSON字符串,不是数组、对象、数字、字符串或原子,字符偏移量为0(在"(字符串末尾)"之前)
能请某人帮我为什么会出现这个错误吗?
$cgi->param('myData')
返回查询参数字符串"mydata",在您的情况下不会发送该字符串。
您将json数据发布在http post负载的请求主体中,而不是作为查询/表单参数。在这种情况下,您需要一些其他函数来读取服务器端脚本中请求主体的内容。
恰好是:
my $data = $query->param('POSTDATA');
如本文所述:http://search.cpan.org/~lds/CGI.pm-3.43/CGI.pm#HANDLING_NONURLENCODED_ARGUMENTS
此外,您应该在发布的正文中从json中删除"mydata=",因为http请求负载正文没有参数名称(它们仅用于查询/表单参数)。
你的最终代码应该是这样的:
var req = {
url: '/cgi-bin/PlaceOrder.pl',
method: 'POST',
headers: { 'Content-Type': 'application/json'},
data: NewOrder
};
服务器端:
my $decdata = decode_json($query->param('POSTDATA'));
我认为这可能与这个问题有关:AngularJs$http.post()不发送数据
通常我会发布这样的数据:
var req = {
url: '/cgi-bin/PlaceOrder.pl',
method: 'POST',
headers: { 'Content-Type': 'application/json'},
data: {"mydata" : NewOrder}
};
然而,我假设您期望数据作为来自以下的请求参数:
my $decdata = decode_json($cgi->param('mydata'));
如果是这样的话,那么相关的SO问题就是你想要的。
var url = '/cgi-bin/PlaceOrder.pl';
var payLoad = {'myData' :JSON.stringify(NewOrder)};
$http.post(url, payLoad)
.success(function(data) {
console.log(success);
})
在服务器端,从请求参数中获取所需的json字符串,然后按如下方式取消json的解析:
$result = $cgi->param('myData');
my $decdata = decode_json($result);
相关文章:
- 将错误消息 JSON 传递到另一个页面模板
- 将json传递到javascript数组中
- 如何将json传递到highcharts
- 数据如何从 JSON 传递到 AJAX
- 将数据从 JSON 传递到主干>模板页面
- 将JSON传递给服务器,如GET/POST以获取文件而不是ajax回复
- 将 php 字符串作为 json 传递,以便由 jquery 接收
- 将 HTML 作为 JSON 传递的最佳做法
- 由于 &in 字符串,无法使用 JSON 传递
- 通过ajax将json传递给谷歌图表 - 如何格式化日期
- 将函数对象引用作为序列化json传递
- 如何强制从JSON传递的表达式进入Angular范围
- 将JSON传递到web方法时出错
- 通过Json传递javascript数组给coldfusion CFC
- 谷歌地图API json传递数组
- Ajax/PythonBottle/Jquery/JSON传递参数有问题
- 用Json传递两个查询
- 如何在节点JS中获得新行并将其作为JSON传递并保存在文本文件中
- 使用json传递一个对象数组给mvc控制器
- 将Django模板中的JSON传递给独立的Javascript文件