我是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作为数据传递并且方法没有参数时它会起作用。
我相信参数和数据是我绊倒的。
答案 0 :(得分: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"
});
答案 1 :(得分: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"
});
答案 2 :(得分:1)
'fred'不是json也不是对象
使用对象表示法:
{"myattr":"fred"}
//您也可以{myattr:"fred"}
然后使用JSON.stringify
将其转换为json对象的STRING表示。
答案 3 :(得分:1)
通过邮寄发送的数据应以{key:value}格式发送 值= {名称:“弗瑞德}
答案 4 :(得分:1)
数据应传递到[key:value]对。