为什么我的服务器代码ajax调用返回一个用双引号括起来的响应?

时间:2013-04-09 21:41:33

标签: javascript asp.net ajax response

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

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:17)

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

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

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

如果您只想删除字符串中的所有引号,请尝试

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

请注意,后者会删除所有引号,包括字符串中间的(转义)引号。

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