Kar*_*ran 6 javascript c# jquery json
在我的例子中,我试图将JavaScript对象动态地拆分为来自C#.NET代码的HTML标记.获取数据后,我准备字符串并在字符串中创建对象,然后将其吐出到HTML标记.
var fileUploadDic = { 'firstname': 'Jo''hn', 'lastname' : 'Macy' , 'country' : 'USA };
Run Code Online (Sandbox Code Playgroud)
稍后在其他一些操作中,例如按钮单击,我试图拉出firstname,它给了我一个JavaScript错误,因为firstname属性中的值没有被转义来处理单引号.虽然我可以在代码后端准备对象字符串时这样做,但我喜欢在客户端做一些事情.
var dv = $('#dv1')
dv.append(fileUploadDic.firstname); //gives me error.
dv.append(fileUploadDic.lastname);
dv.append(fileUploadDic.country);
Run Code Online (Sandbox Code Playgroud)
在JavaScript中是否有任何方法,我可以在从对象中获取字符时进行字符转义.
虽然您正在寻找一个客户端解决方案,但是最稳定可靠的方法是遵循您发送内容保守的鲁棒性原则,即使用服务器端JavaScriptSerializer来序列化您的C#将对象转换为JSON字符串.
这些库旨在解决这些问题,并且不再需要以特殊方式处理数据,因为它包含未终止的字符串文字,因此不需要人们使用API(在这种情况下,仅仅是你).
Employee oEmployee1 =
new Employee{Name="Pini",ID="111", Age="30"};
System.Web.Script.Serialization.JavaScriptSerializer oSerializer =
new System.Web.Script.Serialization.JavaScriptSerializer();
string sJSON = oSerializer.Serialize(oEmployee1);
Run Code Online (Sandbox Code Playgroud)
接下来,从您的AJAX请求返回客户端的sJSON,并像处理任何其他JSON字符串一样处理它.
有关详细信息和更多详细信息,请参阅使用JavaScriptSerializer在C#中将对象转换为JSON.
您显示的第一行代码不是有效的 JavaScript:
var fileUploadDic = { 'firstname': 'Jo''hn', 'lastname' : 'Macy' , 'country' : 'USA };
Run Code Online (Sandbox Code Playgroud)
因为字符串'Jo''hn'中不能有单引号。它必须是'Jo\'hn'或"Jo'hn"。也就是说,如果你的 JS 字符串用单引号引起来,你必须用反斜杠转义字符串中的每个单引号字符,但如果你的 JS 字符串用双引号引起来,你可以在字符串中自由使用单引号。如果您想要连续两个单引号'Jo\'\'hn'或"Jo''hn".
您无法修复此客户端,因为 JavaScript 无效,因此它将无法运行。
你必须在服务器端修复它;最简单的方法可能是使用反斜杠对其进行转义,请注意,如果它位于 C# 字符串中,您也需要转义反斜杠,以便浏览器的实际输出包含反斜杠:
"var fileUploadDic = { 'firstname': 'Jo\\'hn', 'lastname' : 'Macy' , 'country' : 'USA };"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7206 次 |
| 最近记录: |