mar*_*zzz 3 c# ajax jquery json jsonp
我需要管理像'我的JSONP请求中的char ,通过jquery进行Ajax.所以(来自C#)这就是我所做的:
myText = "Hello I'm a string";
myText.Replace("'", "\'");
Response.Write(Request["callback"] + "({ htmlModulo: '" + myText + "'});");
Run Code Online (Sandbox Code Playgroud)
但在客户端,它破了:
parsererror - SyntaxError: missing } after property list
Run Code Online (Sandbox Code Playgroud)
那么,'如果替换不起作用,我该如何管理呢?
.NET已经为您解决了序列化JSON问题.用途System.Web.Script.Serialization.JavaScriptSerializer:
var serializer = new JavaScriptSerializer();
Run Code Online (Sandbox Code Playgroud)
要构造JSONP,您只需要使用JSON文本连接前缀(硬编码或传入"回调"查询参数)和后缀(通常只是),但有时您可能需要根据调用者的期望传递额外的参数,42, null)).
下面的示例显示了基于"回调"参数构建JSONP,jsonpPrefix根据您的需要替换值.
var myText = "Hello I'm a string";
var jsonpPrefix = Request["callback"] + "(";
var jsonpSuffix = ")";
var jsonp =
jsonpPrefix +
serializer.Serialize(new {htmlModulo = myText}) +
jsonpSuffix);
Response.Write(jsonp);
Run Code Online (Sandbox Code Playgroud)
您应该始终使用序列化程序,因为自己动手意味着您更有可能陷入困境并违反JSON规范.例如,您没有引用JSON所需的密钥,因此jQuery和其他JSON解析器将非常混淆.它还将处理所有需要转义的字符.
有关构造JSON的更多信息,请参阅如何在C#中创建JSON字符串.