Javascript 为什么我不能在replace()中传递@符号?
我在视图的Javascript 为什么我不能在replace()中传递@符号?,javascript,jquery,asp.net-mvc,asp.net-mvc-4,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 4,我在视图的@部分中编写了以下javascript代码 var mapping = { '@Title': 'text', '@ID': 'id', '@ParentID': 'parent', '@Narrative': 'value' } var temp = JSON.stringify(data); for (key in mapping) { temp = temp.replace(new RegExp(key, 'g'), mapping[key
@部分中编写了以下javascript代码
var mapping = {
'@Title': 'text',
'@ID': 'id',
'@ParentID': 'parent',
'@Narrative': 'value'
}
var temp = JSON.stringify(data);
for (key in mapping) {
temp = temp.replace(new RegExp(key, 'g'), mapping[key]);
}
data = JSON.parse(temp.replace(/@/g, ''));
假设data
是上面已经声明的数组。在视图中,我不能使用语句data=JSON.parse(temp.replace(/@/g')代码>。它抛出以下错误:
分析器错误
描述:分析资源时出错
服务此请求所必需的。请查看以下具体内容
分析错误详细信息并适当修改源文件
分析器错误消息:“/”在代码块的开头无效。
只有标识符、关键字、注释”()和“{”才有效
我传递@
的原因是要从temp
中删除所有@
符号,但对于MVC代码,它会对@
符号抛出错误
这是zeelong最初在他的文章中发布的一些数组数据
假设您要删除所有@
,则无需在每个属性上循环并单独删除@
,一旦对数据进行字符串化,就可以一次性删除它们
var obj={
“@a”:“val1”,
“@b”:“val2”
}
var stringy=JSON.stringify(obj)
替换的变量=stringy.replace(/@/g'')
var parsed=JSON.parse(已替换)
log(obj、stringy、replacement、parsed)
var oneline=JSON.parse(JSON.stringify(obj.replace(/@/g'))
console.log(oneline)
假设您要删除所有@
,则无需在每个属性上循环并单独删除@
,一旦对数据进行了字符串化,就可以一次删除它们
var obj={
“@a”:“val1”,
“@b”:“val2”
}
var stringy=JSON.stringify(obj)
替换的变量=stringy.replace(/@/g'')
var parsed=JSON.parse(已替换)
log(obj、stringy、replacement、parsed)
var oneline=JSON.parse(JSON.stringify(obj.replace(/@/g'))
console.log(oneline)
发生这种情况是因为Razor认为您正在尝试编写C代码。只需添加double@即可告诉Razor您不这么认为
data = JSON.parse(temp.replace(/@@/g, ''));
对映射
变量内容也执行相同操作:
var mapping = {
'@@Title': 'text',
'@@ID': 'id',
'@@ParentID': 'parent',
'@@Narrative': 'value'
}
发生这种情况是因为Razor认为您正在尝试编写C代码。只需添加double@即可告诉Razor您不这么认为
data = JSON.parse(temp.replace(/@@/g, ''));
对映射
变量内容也执行相同操作:
var mapping = {
'@@Title': 'text',
'@@ID': 'id',
'@@ParentID': 'parent',
'@@Narrative': 'value'
}
可以发布实际数据吗?@Stryner当我尝试时,它不会检测到JSON数组键,因为键前面有一个@符号。实际错误是什么?问题似乎是替换没有返回有效的JSON。请尝试警报(temp.replace(/@/g,'))
在问题行之前查看您得到了什么。@我会从zeelong在这个链接@Joe中回答的TJ的帖子中提取数据吗?这是因为我在“@section script{}”中使用了js脚本'查看页面是否可以发布实际数据?@Stryner当我尝试时,它不会检测到JSON数组键,因为键前面有一个@符号。实际错误是什么?问题似乎是替换没有返回有效的JSON。请尝试警报(temp.replace(/@/g'))
在问题行之前查看您得到了什么。@我会从zeelong在这个链接@Joe中回答的TJ的帖子中提取数据吗?这是因为我在“@section script{}”中使用了js脚本'视图页面的替换方法不接受@symbol,并在我的原始帖子中给出错误我相信这是MVC不喜欢在我看到的脚本部分传递@symbols进行替换。如果您无法在其中放置@
,我将尝试的下一种方法是查找其他所有字符,并替换不匹配的字符(又名@)。但是我相信会有一个更干净的方法。替换方法不接受@symbol,并在我原来的帖子中给出了错误。我相信这是MVC不喜欢在我看到的脚本部分传递@symbols进行替换。如果您无法在其中放置@
,我将尝试的下一个方法是查找其他每个字符和r替换不匹配的(aka,the@)。但是我相信会有更干净的方法。当我这样做时,它抛出错误CS0103:名称“Title”在当前上下文中不存在当我这样做时,它抛出错误CS0103:名称“Title”在当前上下文中不存在