我从服务器端代码中分配JS string
变量的值。
喜欢这个
var fbShareTitle = "@(ViewBag.LeadTitle as string)";
ViewBag
返回字符串值为
A "Fantastic" Lead With 'Qoute'
现在它在控制台
中出错了SyntaxError:missing;在陈述之前
我试过这个
var fbShareTitle = ("@(ViewBag.LeadTitle)").replace(/"/g, '\\"');
但现在我收到了这个错误。
SyntaxError:missing;在陈述之前
由于此字符串将在fb上共享,因此我无法修改字符串,例如将所有"
替换为'
e.t.c。
答案 0 :(得分:0)
您的代码无法正常工作的原因是Razor会生成以下内容:
var fbShareTitle = "A "Fantastic" Lead With 'Qoute'";
这是无效的JavaScript。您无法通过replace
对其进行修复,因为不是您的字符串不好的问题,您的代码可以'解析 - replace
永远不会执行。您需要通过修改Razor代码在服务器端修复它,在那里生成有问题的JavaScript:
var fbShareTitle = @Html.Raw(Json.Encode(ViewBag.LeadTitle as string));
Json
会处理报价并正确转义; Raw
会确保您无法取代<
和>
。 @Html.Raw(Json.Encode(...))
口头禅的额外好处:您可以使用它来注入任何可以用JSON编码的数据,而不仅仅是字符串。