parseInt返回WebSocket数据的奇怪值
Javascript - parseInt returns strange values for WebSocket data
在使用parseInt()时,我得到了一些奇怪的行为。
webSocket.onmessage = function (event) {
var raw = event.data;
alert(raw);
var data = raw.split(":");
alert("lat:'"" + data[0] + "'" lon:'"" + data[1] + "'"");
var x = parseInt(data[0]);
var y = parseInt(data[1]);
alert("lat:" + x + " lon:" + y);
}
第一个警报输出:100:100 -这是从服务器发送的字符串。
第二个警报输出:lat:"100" lon:"100" -没问题
但是,第三个警报输出:l0:1 l0:NaN
是什么原因导致的?
更新:
问题是服务器端的编码产生了一些不可见的不需要的字符。我更新了服务器代码,问题就解决了。工作解决方案。
我的猜测是,在你的数据中有不可打印的字符,如空格,制表符等,这就是为什么你在分裂后得到NaN
。
您可以使用regex
获取如下数据。使用这种方式,您不必担心不可打印的字符,因为regex
只选择数字。
var raw = '100:100 ';
var data = raw.match(/'d+/g);
var x = parseInt(data[0], 10);
var y = parseInt(data[1], 10);
document.write('x=' + x + ' y=' + y);
上面的regex
将从raw
字符串中选择所有的数字。
我同意@Tushar。因此,相信raw = even.data;
中正在解析一些特殊字符(尽管在这里不能复制)
下面的代码似乎工作得很好,你可以调整你的代码并测试它:
<script type="text/javascript">
var raw = '100 :100asd';
var data = raw.match(/[0-9]+/gm);
alert(raw); // console.log(raw);
var data = raw.split(":");
alert("lat:'"" + data[0] + "'" lon:'"" + data[1] + "'"");
var x = parseInt(data[0]);
var y = parseInt(data[1]);
alert("lat:" + x + " lon:" + y);
</script>
相关文章:
- JSON数组数据返回Undefined
- AngularJS中的页面之间共享数据返回空
- post()向服务器动态生成的数据返回空响应
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- d3从mysql数据库导入数据返回“0”;未定义”;
- JSON可以't访问数据返回未定义
- 让 ajax 数据返回到调用函数 - 需要澄清之前的答案
- ajax 调用 PHP 数据返回 VM92:1 未捕获语法错误:意外的标记 {.
- Jquery ajax 请求无法将数据返回给其他函数
- 在 jquery 中将数据返回给 ajax 调用
- Meteor.methods:从内部回调将数据返回给客户端
- 将PHP数据返回到我当前的网页,供Javascript访问
- ajax 调用如何将数据返回给变量
- 将数据返回到索引.js节点表达式
- j查询帖子数据返回比较不起作用
- 节点 API 未将数据返回给客户端 ajax 请求
- jQuery 函数在 AJAX 数据返回上不起作用
- AJAX 将数据返回给 jquery
- 中继:获取递归数据返回空值
- 根据chrome.storage中的数据返回chrome.webRequest.onBeforeRequest的值