如何在JSONP响应中管理? [英] How can I manage ' in a JSONP response?

查看:79
本文介绍了如何在JSONP响应中管理?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在我的JSONP请求中管理像'之类的字符,由jquery进行Ajax处理。所以(来自C#)这就是我所做的:

  myText =你好我是一个字符串; 
myText.Replace(',\');
Response.Write(Request [callback] +({htmlModulo:'+ myText +'}););

但是在客户端它破了:

  parsererror  - 属性列表后的SyntaxError:missing} 

所以,如果替换不起作用,我如何管理'

解决方案

序列化.NET已经为您解决了JSON问题。使用 System.Web .Script.Serialization.JavaScriptSerializer

  var serializer = new JavaScriptSerializer(); 

要构造JSONP,您只需要连接前缀(硬编码或传入回调查询参数)和后缀(通常只是,但有时您可能需要传递额外的参数,具体取决于调用者的期望值,42,null) b

下面的示例显示了基于callback参数构造JSONP,替换 jsonpPrefix 根据您的需要。

  var myText =你好我是一个字符串; 
var jsonpPrefix = Request [callback] +(;
var jsonpSuffix =);
var jsonp =
jsonpPrefix +
serializer.Serialize(new {htmlModulo = myText})+
jsonpSuffix);
Response.Write(jsonp);

你应该总是使用序列化器,因为自己动手意味着你更容易陷入困境违反了JSON规范。例如,您没有引用密钥,即JSON要求的 ,因此jQuery和其他JSON解析器将非常困惑。它还将处理所有需要转义的字符。



有关构建JSON的更多信息,请参阅如何在C#中创建JSON字符串


I need to manage char like ' in my JSONP request, trought Ajax by jquery. So (from C#) this is what I've done :

myText = "Hello I'm a string";
myText.Replace("'", "\'");
Response.Write(Request["callback"] + "({ htmlModulo: '" + myText + "'});");

but on Client side it broke :

parsererror - SyntaxError: missing } after property list

so, How can I manage ' if the replace doesnt works?

解决方案

Serializing JSON is already solved for you by .NET. Use System.Web.Script.Serialization.JavaScriptSerializer:

var serializer = new JavaScriptSerializer();

To construct JSONP you just need to concatenate prefix (either hardcoded or passed in "callback" query parameter) and suffix (normally just ), but sometimes you may need to pass extra parameters depending on what caller expect like ,42, null) ) with JSON text.

Sample below shows constructing JSONP based on "callback" parameter, replace value of jsonpPrefix based on your needs.

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);

You should always use a serializer, because doing it yourself means you're more likely to mess up and violate the JSON spec. For example, you are not quoting the key, which is required by JSON, so jQuery and other JSON parsers will be very confused. It will handle all characters that need to be escaped, as well.

More on constructing JSON can be found in How to create JSON string in C#.

这篇关于如何在JSONP响应中管理?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆