无法调用webmethod来保存handsonTable

时间:2013-06-22 19:46:59

标签: c# jquery json

我想将handontable数据保存到json文件中,我有一个javas cript方法来从handontable获取所有数据

 $('button[name=save]').click(function () {
            var str = handsontable.getData();
            var value = JSON.stringify(str);
            $.ajax({
                url: "WebService.asmx/getData",
                data: { 'data': value }, 
                dataType: 'json',
                contentType: 'application/json',
                type: 'POST',
                success: function (res) {
                    if (res.result == 'ok') {
                        alert('Data saved');
                    }
                    else {
                        alert('Save error');
                    }
                },
                error: function (xhr, err) {
                    alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status);

                }
            });
        });

但我无法调用WebService.asmx / getData(列表数据)。

 public string getData(List<String> data)
{
    return "";
}

我需要传递的数据:?? ...请帮助。

2 个答案:

答案 0 :(得分:0)

            data: { 'data': str  }, 
            dataType: 'json',
            contentType: 'application/json',

使用contentType设置,您告诉服务器您正在发送JSON数据,但事实并非如此。 { 'data': str }不是JSON字符串;它是一个标准的Javascript对象文字。您正在调用用于创建HTTP请求的默认jQuery行为。这意味着您正在发送常规HTTP请求,例如:

?data=thedata

要发送实际的JSON数据,您需要致电JSON.stringify

            data: JSON.stringify({ 'data': str  }), 
            dataType: 'json',
            contentType: 'application/json',

答案 1 :(得分:0)

你必须在methode之前写一下

[WebMethod]

并将方法的参数从List更改为字符串

然后你可以分开它