c# - 如何在 JSONP 响应中管理 '?

标签 c# jquery ajax json jsonp

我需要在我的 JSONP 请求中管理像 ' 这样的字符,通过 jquery 使用 Ajax。所以(来自 C#)这就是我所做的:

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

但在客户端它坏了:

parsererror - SyntaxError: missing } after property list

那么,如果替换不起作用,我该如何管理 '

最佳答案

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

var serializer = new JavaScriptSerializer();

要构建 JSONP,您只需要连接前缀(硬编码或传入“回调”查询参数)和后缀(通常只是 ),但有时您可能需要传递额外的参数,具体取决于什么调用者期望像 ,42, null) ) 和 JSON 文本。

下面的示例显示了根据“回调”参数构建 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);

您应该始终使用序列化器,因为自己动手意味着您更有可能搞砸并违反 JSON 规范。例如,您没有引用 key ,即 required by JSON ,所以 jQuery 和其他 JSON 解析器会很困惑。它还将处理所有需要转义的字符。

有关构建 JSON 的更多信息,请参阅 How to create JSON string in C# .

关于c# - 如何在 JSONP 响应中管理 '?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9431731/

相关文章:

c# - 方法隐藏在 C# 中如何工作?

javascript - 如何使用 jquery 和 CI 设置 href 模式

c# - 客户端在 Windows 服务中找不到 WCF 的端点元素

c# - 从 C# 2.0 中的另一个线程更新控件

c# - 获取两个列表之间的差异

javascript - 在 ajax 调用的脚本中调用 ajax 未正确运行 (PHP)

php - 如何在加载ajax内容和javascript时加载gif图像

javascript - Bootstrap 折叠侧边栏菜单到下拉菜单

javascript - 如何防止变量在javascript中改变

php - 在表单提交之前执行一些 sql 查询以将值插入数据库