当使用json从perl/cgi向客户端发送包括换行符在内的字符串时,脚本将停止
Script stops when sending strings including newline from perl/cgi to client using json
我使用Perl/cgi从mysql接收内容,然后使用json将其传递给客户端但是,当将包含换行符的字符串传递给客户端时,一切都停止了。
字符串从一个文本区域提交,并写入到一个mysqldb中。这一部分做得很好,正确地保存了字符串,并在php中正确地写出了它。但随后一切都停止了,看起来字符串在json部分分成了几行,并中断了代码。
我已经验证了我的json字符串。
有人能想出一个顺利的解决方案吗?
以下是我正在使用的部分代码i perl脚本:
#!/usr/bin/perl -wT
use DBI;
use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;
use XML::Simple;
use Data::Dumper;
use utf8;
binmode( STDOUT, ":utf8" ); #denne gjør det mulig å sende æ ø å uten feil
binmode(STDIN);
require Encode;
#print out result:
print '[{"prosjekter":[';
for ( my $i = 0; $i < $file_no; $i++ ) {
print '{"prosjektId":'
. $prosjekter[$i]{"id"}
. ',"prosjektNavn":"'
. $prosjekter[$i]{"prosjektNavn"}
. '","prosjektNummer":"'
. $prosjekter[$i]{"prosjektNummer"}
. '","info":"'
. $prosjekter[$i]{"info"}
. '","bulk":"'
. $prosjekter[$i]{"bulk"} . '"}';
if ( $i < ( $file_no - 1 ) ) {
print ',';
}
}
print ']}]';
这是从服务器接收json结果的脚本:
var string = JSON.parse(xmlhttp.responseText);
for(var i = 0; i < string.length; i++){
var sale = string[i];
var ac=1;
db.transaction(function (tx) {
var prosjekt = sale.prosjekter;
for(var pi = 0; pi < sale.prosjekter.length; pi++){
var prosjektId = prosjekt[pi].prosjektId;
var prosjektNummer = prosjekt[pi].prosjektNummer;
var prosjektNavn = prosjekt[pi].prosjektNavn;
tx.executeSql('INSERT INTO PROSJEKTER (id, prosjektNummer, prosjektNavn) VALUES ('+prosjektId+', "'+prosjektNummer+'", "'+prosjektNavn+'")');
//document.getElementById('content').innerHTML+='<br>INSERT INTO KUNDER_TIL_PROSJEKTER (kundeId, prosjektId) VALUES ('+kundeId+', '+prosjektId+')';
ac++;
if(ac == sale.prosjekter.length) alert("Prosjekter oppdatert!");
}
//alert(kortNavn);
});
使用JSON
。
除了字符串化键/值对之外,JSON规范还有更多内容。因此,使用一个模块来处理所有事情,例如处理包含换行符的字符串:
use strict;
use warnings;
use JSON;
my %hash = (
number => 17,
word => "banana",
paragraph => "Hello world'nWhat's up world?'nGoodbye world.",
);
print to_json '%hash;
输出:
{"word":"banana","number":17,"paragraph":"Hello world'nWhat's up world?'nGoodbye world."}
相关文章:
- JavaScript字符串中的换行符也保存为.txt
- 如何删除字符串开头和结尾的换行符
- 如何将CSS跨度应用于没有换行符的串联字符串
- 获取字符串中最后一个换行符的最有效方法是什么
- 在不使用HTML的情况下对字符串中的换行符进行编码
- 如何拆分由换行符分隔的字符串
- 字符串中的字符串可以'不能用换行符分隔
- 从ES6到HTML的多行模板字符串不包括换行符
- 换行符及其在 Javascript 中的字符串连接中的作用
- 换行符导致 JavaScript 中的错误“未终止字符串文字”
- JSON 字符串中的换行符不会出现在 JS 对象中
- 包含换行符的字符串
- 在 JavaScript 字符串 (regex) 中插入多个换行符 (CodeMirror)
- 正确转义 javascript json 字符串中的换行符
- 如何检测字符串中的特定范围是否在换行符中
- PHP 字符串包含打印 Javascript 时的换行符问题
- 尝试向字符串中的每个找到的模式添加换行符
- NodeJS Bug?执行在要返回的字符串之前带有换行符的返回语句时出错
- 如何在不丢失换行符和空格的情况下将js字符串变量传递给php
- 带有换行符的JSP+HTML-将其作为字符串获取,并删除"新线”;