将Param发送到jQuery的Ajax无效

Sending Param to the Ajax of jQuery not effective

本文关键字:Ajax 无效 jQuery Param      更新时间:2023-09-26

我正在尝试使用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"
     });
 });

});

你认为我哪里做错了?

将jQuery与ASP.NET AJAX 一起使用时要避免的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"
        });
    });
});

如果你的问题只是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);
  });
});
var ID = $("#HiddenField2").val();
$.ajax({
    type: "POST",
    url: "viewMessages.aspx/readen",
    data: {"KEY":ID},
    contentType: "application/json",
    dataType: "json"
 });

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