带有jquery和参数的asp.net页面方法

带有jquery和参数的asp.net页面方法,asp.net,json,Asp.net,Json,在我的javascript中,我有: var testdate = "{'TheNewDate' : '12/02/2011'}"; $("#mydiv").click(function () { $.ajax({ type: "POST", url: "../Pages/Appointments.aspx/GetAppointements", data: testdate, contentType: "applicati

在我的javascript中,我有:

var testdate = "{'TheNewDate' : '12/02/2011'}";

$("#mydiv").click(function () {
    $.ajax({
        type: "POST",
        url: "../Pages/Appointments.aspx/GetAppointements",
        data: testdate,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
            success: successFn,
        error: errorFn

    });
});
在我的代码背后,我有

[WebMethod]
public static string GetAppointements(string DateInput)
{
    var t = DateInput;
但是,当我单击运行调用时,我会激活error函数。当我将代码隐藏函数更改为公共静态字符串getAppoiment()时,它就可以工作了。但我想我的目标是将一个参数传递给后面的代码。我错过了什么


谢谢。

您的参数名为
DateInput
,而不是
newdate
,因此:

$('#mydiv').click(function () {
    $.ajax({
        type: 'POST',
        url: '../Pages/Appointments.aspx/GetAppointements',
        data: JSON.stringify({ dateInput: '12/02/2011' }),
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: successFn,
        error: errorFn
    });
});

您应该使JSON数据与web服务方法中的参数名匹配

var testdate = "{'DateInput' : '12/02/2011'}";

谢谢,太简单了!但是你需要一段时间才能自己弄清楚。。。。非常感谢。@frenchie,还请注意使用了
JSON.stringify
,而不是将无法正确编码的硬编码字符串。快速提问:我在代码隐藏页面中声明的变量在页面方法中不可用;这正常吗?@frenchie,是的,这很正常。静态方法(如PageMethods)应该只能访问静态类成员。我有需要在page方法中访问的用户ID。现在它只是一个硬编码的数字,但稍后它将成为真实用户的ID。我如何在page方法中解决这个问题?如何验证传入请求是否属于该特定用户?