您的位置:首页 > Web前端 > JavaScript

利用 Newtonsoft 处理Json 特殊字符

2010-12-11 09:31 423 查看
通常Ajax使用Json从服务端载入数据。

在服务端 可以利用拼结 Json数据字符串返回客户端。 数据不存在特殊字符 如:' " \ 等特殊字符可以正常呈现。

如果当所获取的数据包含这些特殊字符时,Json数据在客户端解析就会出现问题。

解决办法,可以用第三方 Newtonsoft.dll 下载生成Json数据。

示例

后台 ashx 文件代码(vb.net 实现,C#同理,语法不同):

Public Class QuickSearchMerchant

Implements System.Web.IHttpHandler, IReadOnlySessionState

Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest

Dim SearchType As String = context.Request.Form("SearchType")

Dim SearchValue As String = context.Request.Form("SearchValue")

Dim CurrentIndex As String = context.Request.Form("CurrentIndex")

context.Response.ContentType = "application/json"

context.Response.Charset = "utf-8"

Dim obj As New QSMerchant()

obj.MerchantID = "JamesTest"

obj.AltMerchantID = "Alt James"

obj.ParentMerchantID = "Parent James"

obj.CreditStatus = "Credit Status"

obj.CustomerType = "customer type"

obj.BlockLastTrans = "2010 11 11"

obj.AgentID = "agnet ID"

obj.AltAgentID = "alt agnet ID"

obj.Phone = "Phone"

obj.Company = "Company"

obj.Fax = "Fax"

obj.Email = "Email"

obj.Memo = "Memo"

Dim json As String = JsonConvert.SerializeObject(obj)



context.Response.Write(json)

context.Response.Flush()

context.Response.End()

End Sub

End Class

前端 Javascript 代码:

url:为请求的地址,此处为ashx的地址。

prefix:为页面InputID前缀部分,inputid=prefix+后端对应的对象成员名称,达到自动赋值的目的。

param:为传递到ashx处理程序的值,在此你可以存放你的一些参数

如:ashx 里的 Dim SearchType As String = context.Request.Form("SearchType")。

格式: Param = {SearchType: Condition.Type,SearchValue: Condition.Value ,CurrentIndex : 0 }; ,与 ashx里获取的一一对应。

function LoadJsonData(url,prefix,param)

{

$.ajax({

url: url ,

type: 'post',

async:false,

data: param,

dataType: 'json',

beforeSend: function() {

},

cache: false,

complete: function() {

},

error: function(data) {

},

success: function(json) {

$.each(json, function(key, value) {

if($("#" + prefix +key).attr("type")=="text" || $("#" + prefix +key).attr("type")=="hidden"){

$("#" + prefix +key).val(value);

}

else{

$("#" + prefix +key).html(value);

}

});

}

});

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: