2014-10-18 43 views
0

我想简单地将一些值从Javascript传递到我的代码隐藏进行处理。 我只是想通过一个NumberMessageWebMethod但基于我改变的任何事情得到不同的错误。对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'.

从一些玩弄早些时候,我能得到通过改变参数从stringobject命中该断点(以及对Ajax调用中的data:value的一些更改),但是看起来我收到了Dictionary,我无法将它投射到TMessage

感谢您的任何建议。

回答

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"); 
    } 
}); 
} 
+0

尝试这样做,断点被击中,但对于'message'参数的值是:' “的翻译:”' – cdsln 2014-10-18 16:43:59

+0

在哪里?它是否在''ajax'的成功处理程序中?如果是,那么只需使用'msg.d'。我的意思是,HTTP状态200的Ajax调用是否正常? – 2014-10-18 16:45:13

+0

断点在'SendMessage(string message)'的codebehind中被命中。但是'message'的值是'“[object Object]”。我期望它是沿着我在Ajax调用中传递的值的JSON字符串表示的行的东西...? – cdsln 2014-10-18 16:48:03