3

我是 javascript 和 jquery 的新手,如果可能的话,我希望得到一些帮助。我搜索并试图让它工作,但我想我错过了一些简单的东西。

我的cs文件中有以下方法(CeduleGlobale.aspx.cs)

[WebMethod]
     public static void SetSession(string data)
     {
         HttpContext.Current.Session["salesorderno"] = data;
     }

我的 ascx 文件中还有一些 javascript

<script type="text/javascript">
    function SetSession() {

        var request;

        var values = 'fred';
        request = $.ajax({
            type: "POST",
            url: "CeduleGlobale.aspx/SetSession",
            data: values,
            contentType: "application/json; charset=utf-8",
            dataType: "json"
        });

        request.done(function () {
            alert("Finally it worked!");
        });

        request.fail(function () {
            alert("Sadly it didn't worked!");
        });


    }
</script>

脚本中的函数由

<dx:ASPxCheckBox ID="cbxHold" runat="server" AutoPostBack="true" Text="OnHold" ClientSideEvents-CheckedChanged="SetSession">
</dx:ASPxCheckBox>

我不断得到的结果是“可悲的是,它没有用!”。

我知道问题不在于与 url 的路径相关的任何内容,因为当我将 NULL 作为数据传递并且没有参数的方法时它起作用了。

参数和数据是我相信的。

4

5 回答 5

2

您应该将序列化的 JSON 传递给方法:

var values = JSON.stringify({data:'fred'});
request = $.ajax({
    type: "POST",
    url: "CeduleGlobale.aspx/SetSession",
    data: values,
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});
于 2013-07-12T13:21:39.900 回答
2

您指定要发送 JSON,但没有将值序列化为 JSON,因此请尝试将请求更改为:

request = $.ajax({
        type: "POST",
        url: "CeduleGlobale.aspx/SetSession",
        data: JSON.stringify({data: values}), // 'stringify' the values to JSON
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    });
于 2013-07-12T13:22:39.980 回答
1

'fred' 不是json也不是对象

使用对象表示法:

{"myattr":"fred"}//你也可以{myattr:"fred"}

然后使用JSON.stringifywhich 将其转换为 json 对象的 STRING 表示形式。

于 2013-07-12T13:22:22.520 回答
1

通过 post 发送的数据应该以 {key:value} 格式发送 values={name:'fred'}

于 2013-07-12T13:22:56.617 回答
1

数据应传递到 [key:value] 对。

于 2013-07-12T13:30:28.747 回答