gpt4 book ai didi

javascript - 查询字符串解析被 Node.js 中的撇号 chop

转载 作者:搜寻专家 更新时间:2023-10-31 23:56:14 24 4
gpt4 key购买 nike

我正在用 Node.js 构建一个服务器,它从网站上的 Javascript 接收数据。使用 jQuery 的 getJSON 方法发送数据,如下所示:

$.getJSON(
url,
{
id: track.id,
artist: track.artist,
title: track.title,
album: track.album,
filename: track.filename,
user: track.user,
userId: track.userId,
room: track.room,
timestamp: track.timestamp
}
);

然后我尝试使用 Node 的 url 模块获取数据,如下所示:

var urlObj = url.parse(request.url, true);
var jsonCallback = urlObj.query["callback"];

这在大多数情况下工作正常,但当其中一个参数包含撇号时它会失败。看起来它正在停止解析撇号处的查询字符串。以下是 console.log 为两个不同的查询对象打印的内容:

{ callback: 'jQuery15105242477038409561_1304925579219',
id: '6c91c74db064c93f1f020000',
artist: 'Radiohead',
title: 'Everything In Its Right Place',
album: 'Kid A',
filename: '01 Everything In Its Right Place.m4a',
user: 'Cowrelish',
userId: '82a89b4df7a9120305000000',
room: 'qwantz',
timestamp: '1304924972555',
_: '1304925611362' }
{ callback: 'jQuery15105242477038409561_1304925579221',
id: '798cc74dfcce4337f7010000',
artist: 'Toy Dolls',
title: 'The Final Countdown',
album: 'HOLY SHIT!!! IT' }

第二张专辑是“天哪!!这是最后的倒计时!”,如您所见,它在撇号处被 chop 了。

我已经尝试在客户端代码中转义撇号,但我得到的只是“专辑:'HOLY SHIT!!! IT\\'”。它转义斜线,但不转义撇号。

这是错误还是功能?我应该在客户端以不同的方式转义撇号,还是希望修复 Node.js 中的错误?

最佳答案

您不必在 jquery 端转义,而且它似乎不是 Node 错误(至少在最新版本中是这样)。

我试图重现您的问题,但无法使用 Node 0.4.7。

我这样做了:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$.getJSON('/', {test:"it's a test"});
});
</script>

Node 代码刚刚对传入请求执行此操作:

console.log(require('url').parse(req.url, true));

这给了我:

{ test: 'it\'s a test' }

因此,似乎不是 jQuery 或 Node 的普遍问题。

在解析之前,您是否看过完整的 url?您应该能够将其复制并粘贴到 Node 交互式 shell 中并执行类似这样的操作来测试:

require('url').parse('http://www.example.org/?q=it\'s working', true);

浏览器和网络服务器之间的任何东西可能会触及 url?

关于javascript - 查询字符串解析被 Node.js 中的撇号 chop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5933923/

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