【问题标题】:Javascript values to WebMethodWebMethod 的 Javascript 值
【发布时间】:2014-12-14 00:12:15
【问题描述】:

我试图简单地将一些值从 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

感谢您的任何建议。

【问题讨论】:

    标签: javascript asp.net ajax json webmethod


    【解决方案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");
        }
    });
    }
    

    【讨论】:

    • 试过这个,断点命中,但是message参数的值为:"[object Object]"
    • 在哪里?是在success 处理程序中的ajax 吗?如果是,那么只需使用 msg.d 。我的意思是,ajax 调用与 HTTP 状态 200 是否兼容?
    • 断点在SendMessage(string message)的代码隐藏中命中。但是message 的值是"[object Object]"。我希望它类似于我在 Ajax 调用中传递的值的 JSON 字符串表示形式...?
    • 确实 - document.getElementById("message").value 有实际的字符串值吗?
    • 实际上我将var params = "{'message':'" + message + "'}"; 设置为var params = "{'message':'" + msg + "'}"; 它现在可以工作,但只发送message 而不是数字.. 无论如何这是一个开始:)
    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2015-11-18
    • 2013-05-07
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    相关资源
    最近更新 更多