Ajax JQuery 传递数据到 POST 方法

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数据并且该方法没有参数时,它可以工作。

我相信问题出在参数和数据上。


您的选项显示您正在发送JSON数据,但是您的“values”不符合有效的JSON格式。 - DevlshOne
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"
});

或者 values = "key1=value1&key2=value2" - reyaner
1
首先,非常感谢所有的回答,这个社区真是太棒了,提供了很多帮助。我按照你们的建议去做了,但现在在 Visual Studio 调试器中出现了“Microsoft JScript 运行时错误:'JSON' 未定义”的错误。 - SerenityNow

2
您正在指定发送JSON,但未对值进行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"
    });

1

'fred'不是JSON也不是对象

使用对象表示法:

{"myattr":"fred"} //你也可以这样做{myattr:"fred"}

然后使用JSON.stringify将其转换为JSON对象的字符串表示形式。


1
通过POST发送的数据应该以{key:value}格式发送,例如values={name:'fred'}。

1
数据应该以[key:value]的形式传递。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接