PageMethods、jQuery 和 JSON

发布于 2024-10-16 15:21:53 字数 1617 浏览 7 评论 0原文

我正在尝试使用 jQuery 调用 PageMethod,如下所示:

[WebMethod]
public stataic string WebMethod(PostData data)
{
    //DO WORK
    return "a";
}

PostData 类如下:

public class PostData
{
    public string Guid{get;set;}
    public string Action{get;set;}
    public string Id{get;set;}
}

我正在从 jQuery 调用方法,如下所示:

$.ajax({
    type="POST",
    url: 'url',
    data: JSON.stringify(b),
    contentType: "application/json;charset=utf-8",
    dataType: "json",
    success: function (msg) {
        var t = $(c).html();
        $(c).html(t + "<br/>" + $.evalJSON(msg.d));
    },
    error: function (x, y) {
        var t = $(c).html();
        $(c).html(t + "<br/>" + $.evalJSON(x.responseText).Message);
    }
});

where b > 就像: {"PostData":{"Guid":"b61dce32-690b-4409-b51a-a6012462e54e","Action":"Testing","Id":"3"}}

我收到此错误:

Invalid web service call, missing value for parameter: 'data'.

如果我不调用 JSON.stringyfy 那么我收到此错误:

Invalid JSON primitive: PostData.

我也尝试过此 {"Guid":"b61dce32-690b-4409-b51a -a6012462e54e","Action":"Testing","Id":"3"} 但仍然会得到

Invalid JSON primitive 'Guid'

or

Invalid web service call, missing value for parameter: 'data'.

取决于我是否调用 JSON.stringify

我也尝试过,

 [WebMethod]
 public static string WebMethod(string data)

但是没有地方。

I am trying to call a PageMethod using jQuery like this:

[WebMethod]
public stataic string WebMethod(PostData data)
{
    //DO WORK
    return "a";
}

PostData class is as follows:

public class PostData
{
    public string Guid{get;set;}
    public string Action{get;set;}
    public string Id{get;set;}
}

I'm calling method from jQuery like this:

$.ajax({
    type="POST",
    url: 'url',
    data: JSON.stringify(b),
    contentType: "application/json;charset=utf-8",
    dataType: "json",
    success: function (msg) {
        var t = $(c).html();
        $(c).html(t + "<br/>" + $.evalJSON(msg.d));
    },
    error: function (x, y) {
        var t = $(c).html();
        $(c).html(t + "<br/>" + $.evalJSON(x.responseText).Message);
    }
});

where b is like: {"PostData":{"Guid":"b61dce32-690b-4409-b51a-a6012462e54e","Action":"Testing","Id":"3"}}

I'm getting this error:

Invalid web service call, missing value for parameter: 'data'.

If I don't call JSON.stringyfy then I get this error:

Invalid JSON primitive: PostData.

I have tried this also {"Guid":"b61dce32-690b-4409-b51a-a6012462e54e","Action":"Testing","Id":"3"} but still get either

Invalid JSON primitive 'Guid'

or

Invalid web service call, missing value for parameter: 'data'.

depending on if I call JSON.stringify or not.

I have also tried,

 [WebMethod]
 public static string WebMethod(string data)

but got no where.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寄居人 2024-10-23 15:21:53

JSON 中的第一个分层对象名称应与 Web 服务参数名称相同。

{"data": {"Guid":"b61dce32-690b-4409-b51a-a6012462e54e","Action":"Testing","Id":"3"} }

The first layered object names in the JSON should be the same names as your webservice arguments names.

{"data": {"Guid":"b61dce32-690b-4409-b51a-a6012462e54e","Action":"Testing","Id":"3"} }
旧故 2024-10-23 15:21:53

试试这个,

       var params = {"PostData":{"Guid":"b61dce32-690b-4409-b51a-a6012462e54e","Action":"Testing","Id":"3"}}; 
       var yourdata = jQuery.param(params); 

通过

你的数据

作为您的数据而不是 JSON.stringify(b)。

Try this,

       var params = {"PostData":{"Guid":"b61dce32-690b-4409-b51a-a6012462e54e","Action":"Testing","Id":"3"}}; 
       var yourdata = jQuery.param(params); 

pass

yourdata

as your data instead of JSON.stringify(b).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文