Javascript值为WebMethod

时间:2014-10-18 15:37:23

标签: javascript asp.net ajax json webmethod

我试图简单地将一些值从Javascript传递到我的代码隐藏处进行处理。 我只想将NumberMessage传递给WebMethod,但根据我改变的内容得出不同的错误。

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调用中的值),但是我似乎收到了Dictionary而我无法将其投放到TMessage

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

如果你清楚地看一下webmethod,它只有一个参数,即message

您需要将此传递给ajax调用。 - var params = "{'message':'" + message + "'}";

有用的链接 - Send JSON to webmethod?

function SendMessage() {

var number = document.getElementById("phonenumber").value;
var message = document.getElementById("message").value;

var params = "{'message':'" + message + "', 'number':'" + number + "'}";
$.ajax({
    type: "POST",
    url: "Default.aspx/SendMessage",
    data: params,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
        alert("Message sent");
    },
    error: function (msg) {
        alert("Message call failed");
    }
});
}