【问题标题】:decodeURI doesn't seem to be working?decodeURI 似乎不起作用?
【发布时间】:2015-01-05 19:01:01
【问题描述】:

我有一个字符串,类似于

"Bob\u0027s Burgers"

decodeURI 似乎并没有将 \u0027 变成一个撇号,就像它应该做的那样。就这一点而言,它只是不理会它。 encodeURI 似乎对它做了各种各样的事情,但 decodeURI 似乎并没有做到这一点。我在这里错过了什么吗?或者就像他们用不太雄辩的英语所说的那样,“做什么?”

编辑:返回字符串的代码: courseNames 保存需要的值

$.ajax({
        async: false,
        url: "/urlforaction",
        type: 'POST',
        data: {eventID: model.EventID},
        complete: function (data) {
            courseNames = data["responseText"].substring(1).substring(0, data["responseText"].length-2).split(',');
            //courseNames = courseNames.split(',');
            //courseNames = courseNames.replace('"', '');
            for (i = 0; i < courseNames.length; i++) {
                courseNameHTMLStream += courseNames[i] + '<br/>';
            }
        }
    });

双重编辑:responseText 包含这样的字符串:

"类别标题,Bob/u0027s Burger 1,Bob/u0027s Burger 2"

【问题讨论】:

  • 这不是应该为 URI 编码特殊字符的方式。检查encodeURI("Bob's Burgers") 返回的内容。
  • 是的,除其他外,它会将 %20 中的空格用于 url。
  • 实际上,我错了.. unescape 已弃用.. 抱歉。改用decodeURIComponent
  • 还是不行。是否已弃用不会造成太大问题。
  • 您使用的是哪个浏览器?我在 Chrome、ff、safari、opera 上对其进行了测试——(虽然没有 IE)并且似乎对我有用。

标签: javascript json decode encode


【解决方案1】:

只需通过JSON.parse 即可解决问题,

var foo = '"Category Title,Bob\\u0027s Burger 1,Bob\\u0027s Burger 2"';

console.log(foo);
// outputs "Category Title,Bob\u0027s Burger 1,Bob\u0027s Burger 2"
console.log(JSON.parse(foo));
// outputs Category Title,Bob's Burger 1,Bob's Burger 2

http://jsfiddle.net/tj38pehv/1/

从那里开始,你可以继续用逗号分割它。


来自 cmets:

c# 正在返回return Json(string.Join(",", &lt;a complicated EF join statement&gt;, JsonRequestBehavior.AllowGet);

那么,您为什么首先加入这些价值观?如果&lt;a complicated EF join statement&gt; 产生一个类似数组的结构,那么只需将 that 编码为 JSON,而不是制作一个逗号分隔的字符串,应该给你一个 array立即在您的 JavaScript 中添加单个值……

【讨论】:

  • 就是这样。无论是谁首先做到了这一点(我,也许?它是继承的代码,所以我将继续按照一般原则对这个错误负责)并没有花时间在 JSON 中处理它方式,无论出于何种原因,我只是没有看到它。我在某个时候欠你一个,但我不确定我能不能回报你。谢谢。
  • 不用担心,我们都知道,当一个人在一段代码上工作时间过长时,有时很难看到自己的“愚蠢”错误,以及如何重新审视它指出所说的愚蠢;-)
猜你喜欢
  • 2016-11-29
  • 2016-02-01
  • 2020-09-23
  • 2010-12-05
  • 2011-06-14
  • 2015-01-10
  • 2016-02-24
  • 2011-01-18
  • 2018-06-20
相关资源
最近更新 更多