我想简单地将一些值从Javascript传递到我的代码隐藏进行处理。 我只是想通过一个Number
和Message
到WebMethod
但基于我改变的任何事情得到不同的错误。对WebMethod的Javascript值
JS:
function SendMessage() {
var number = document.getElementById("number").value;
var message = document.getElementById("message").value;
var msg = {
"Number": number,
"Message": message
};
$.ajax({
type: "POST",
url: "Default.aspx/SendMessage",
data: JSON.stringify(msg),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert("Message sent");
},
error: function (msg) {
alert("Message call failed");
}
});
}
在我隐藏我有一个WebMethod
定义,也是一个Message
类来保存我的消息
[WebMethod]
public static void SendMessage(string message)
{
//Create a TMessage and deserialize to it
}
Message
:
public class TMessage
{
public string Number { get; set; }
public string Message { get; set; }
}
我的理解是,我正在接收JSON,并将其反序列化为Message
类型。但是我在SendMessage
方法中设置断点,它从来没有被击中,被返回的错误 是: Message=Invalid web service call, missing value for parameter: 'message'.
从一些玩弄早些时候,我能得到通过改变参数从string
到object
命中该断点(以及对Ajax调用中的data:value的一些更改),但是看起来我收到了Dictionary
,我无法将它投射到TMessage
。
感谢您的任何建议。
尝试这样做,断点被击中,但对于'message'参数的值是:' “的翻译:”' – cdsln 2014-10-18 16:43:59
在哪里?它是否在''ajax'的成功处理程序中?如果是,那么只需使用'msg.d'。我的意思是,HTTP状态200的Ajax调用是否正常? – 2014-10-18 16:45:13
断点在'SendMessage(string message)'的codebehind中被命中。但是'message'的值是'“[object Object]”。我期望它是沿着我在Ajax调用中传递的值的JSON字符串表示的行的东西...? – cdsln 2014-10-18 16:48:03