Ajax JQuery将数据传递到POST方法

本文关键字:POST 方法 JQuery 数据 Ajax | 更新日期: 2023-09-27 18:22:10

我是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作为数据传递并且方法没有参数时,它就起作用了。

参数和数据是我绊倒我的东西,我相信。

Ajax JQuery将数据传递到POST方法

您应该将序列化的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"
});

您指定要发送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"
    });

"red"不是json也不是对象

使用对象表示法:

{"myattr":"fred"}//您也可以进行{myattr:"fred"}

然后使用CCD_ 3将其转换为json对象的STRING表示。

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

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