将Param发送到jQuery的Ajax无效

我正在尝试使用jQuery的Ajax,我在下面有这个代码,虽然我在firebug中没有错误但是它没有工作,似乎后面的代码中的函数没有得到任何参数。

(document).ready(function () { $("#S1").click(function () { $("#t1").toggle("fast"); $("#P1").toggle("fast"); $("#S1").css("background-color", "White"); var ID = $("#HiddenField1").attr("Value"); var params = { 'Key': ID }; $.ajax({ type: "POST", url: "viewMessages.aspx/readen", data: params, dataType: "json" }); }); }); 

这是背后的代码

 [WebMethod(EnableSession = false)] public static void readen(string Key) { DBController db = new DBController(); db.ReadenMes(Convert.ToInt32(Key)); } 

下面的代码工作,但因为我想在IE 6中使用它,我必须使用上面的代码。

  $(document).ready(function () { $("#S2").click(function () { $("#t2").toggle("fast"); $("#P2").toggle("fast"); $("#S2").css("background-color","White"); var ID = $("#HiddenField2").attr("Value"); var params = new Object(); params.Key = ID; var myJSONText = JSON.stringify(params); $.ajax({ type: "POST", url: "viewMessages.aspx/readen", data: myJSONText, contentType: "application/json", dataType: "json" }); }); 

});

你觉得我哪里做错了?

如果您的问题只是IE6没有JSON.stringify方法,那么您可以使用Douglas Crockford的json2.js ,然后您的第二个样本也应该在IE6中按预期工作。

 $(function () { $("#S2").click(function $("#t2").toggle("fast"); $("#P2").toggle("fast"); $("#S2").css("background-color","White"); var ID = $("#HiddenField2").attr("Value"); var myJSONText = JSON.stringify({ Key: ID }); $.ajax({ type: "POST", url: "viewMessages.aspx/readen", data: myJSONText, contentType: "application/json", dataType: "json" }); }); }); 

另一种方法是不使用’json’数据类型,然后params应序列化为常规查询字符串。

 $(function () { $("#S2").click(function $("#t2").toggle("fast"); $("#P2").toggle("fast"); $("#S2").css("background-color","White"); var ID = $("#HiddenField2").attr("Value"); var params = { Key: ID }; $.post("viewMessages.aspx/readen", params); }); }); 

在ASP.NET AJAX中使用jQuery时要避免3个错误

 $(document).ready(function () { $("#S1").click(function () { $("#t1").toggle("fast"); $("#P1").toggle("fast"); $("#S1").css("background-color", "White"); var ID = $("#HiddenField1").val(); var params = "{ 'Key':'" + ID + "'}"; //changes here $.ajax({ type: "POST", url: "viewMessages.aspx/readen", data: params, dataType: "json", contentType: "application/json; charset=utf-8" }); }); }); 
 var ID = $("#HiddenField2").val(); $.ajax({ type: "POST", url: "viewMessages.aspx/readen", data: {"KEY":ID}, contentType: "application/json", dataType: "json" }); 

此外,您不需要对数据组件进行字符串化,也不需要声明新的Object。