【问题标题】:Why is my server code ajax call returning a response wrapped in double-quotes?为什么我的服务器代码 ajax 调用返回用双引号括起来的响应?
【发布时间】:2013-04-01 13:00:33
【问题描述】:

我正在从我的 javascript 到 aspx 页面的 webmethod 进行 ajax 调用。由于某种原因,我返回的字符串用双引号括起来。我尝试将它们剥离,但由于某种原因,替换只替换了第一个。在服务器端没有包裹字符串的引号。

        var req = new XMLHttpRequest();
        var url = document.URL;
        // strip pound sign off the end
        var poundIndex = url.lastIndexOf('#');

        if (poundIndex === url.length - 1) {
            url = url.substring(0, poundIndex);
        }
        url += '/SignOn';
        req.open('post', url, false);
        req.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
        req.send();

        var serverResponse = req.responseText.replace('"', '');

这是我在服务器上做的:

Return System.Configuration.ConfigurationManager.AppSettings("url").ToString + "?token=" + HttpContext.Current.Session("Token").ToString() + "&aid=ca"

有什么想法吗?

【问题讨论】:

  • 控制台自动显示字符串值的引号,所以字符串本身实际上只有单引号。
  • 您不应该使用System.Configuration.ConfigurationManager.AppSettings("url").ToString() + 而不是System.Configuration.ConfigurationManager.AppSettings("url").ToString +吗?
  • @Bart 是嵌套的,所以双引号包含在字符串中。
  • @MarkSchultheiss 它是 VB.NET。只要括号是空的,它就不会在意。
  • @Yatrix 开发人员控制台会自动将字符串值用引号括起来,因此您看到的外部引号确实不存在。内引号应该在那里,因为 JSON 字符串总是在引号中。请参阅json.org -> 字符串。使用JSON.parse(req.responseText); 解析字符串。如果您仍然想摆脱所有引号,请尝试req.responseText.replace(/\"/g, "");

标签: javascript asp.net ajax response


【解决方案1】:

首先,如果您担心看到的是“mystring”而不是“mystring”(双引号而不是单引号),那是因为开发者控制台会自动在字符串值周围显示引号,如果您的字符串实际上包含“引号”字符。您在控制台中看到的外部引号不存在,只有内部引号存在。

接下来,根据 JSON 规范 (http://www.json.org/),JSON 字符串以引号开头和结尾。如果您想解析 json 字符串,请使用:

var str = JSON.parse(req.responseText);

如果你只是想去掉字符串中的所有引号,试试

var str = req.responseText.replace(/\"/g, "");

请注意,后者去掉了所有引号,包括字符串中间的(转义)引号。

如果您正在使用 JSON 对象,正如您的响应标头 (application/json) 所表明的那样,我强烈建议您使用 JSON.parse

【讨论】:

  • 只需使用/(^"|"$)/g 来修剪开头和结尾的引号
  • 这是个好建议。我什至会走得更远,也摆脱空白。 /(^\s*"|"\s*$)/g
  • 因为它是我生成的字符串,所以不用担心空格和附加引号,但仍然是个好主意。谢谢你的帮助,巴特。要把这件事记到一天结束,我的大脑已经没有什么可给的了。 =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 2019-10-26
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多