我正在从我的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"
有什么想法吗?
答案 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