12

我正在从我的 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"

在此处输入图像描述

有任何想法吗?

4

1 回答 1

20

首先,如果您担心看到的是 ""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

于 2013-04-09T22:03:11.540 回答