将JSON发送到webmethod?

Han*_*sir 7 c# asp.net jquery json asmx

如何使用jQuery将JSON对象发送到web方法?

The*_*iot 20

请参考文章由戴维·沃德.这是一个关于做这些事情的完整教程.你也会发现其他很棒的jquery/ASP.net东西.

编辑: - Dave调用方法没有任何参数,您可以用您要发送的实际数据替换空数据属性:

$.ajax({
  type: "POST",
  url: "Default.aspx/GetDate",
  data: "{'name':'tiger1','hobbies':['reading','music']}",//PUT DATA HERE
  contentType: "application/json; charset=utf-8",
  dataType: "json",
Run Code Online (Sandbox Code Playgroud)

  • +1 - 我认为这个主题和那篇特别的文章将会持续一段时间:) (3认同)

CMS*_*CMS 11

WebMethods期望一个包含JSON的字符串将在服务器端解析,我使用该JSON.stringify函数将参数对象转换为字符串,并发送数据,我有这样的函数:

jQuery.executePageMethod = function(location, methodName, methodArguments,
                                    onSuccess, onFail) {
    this.ajax({
        type: "POST",
        url: location + "/" + methodName,
        data: JSON.stringify(methodArguments), // convert the arguments to string
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data, status) {
            var jsonData = JSON.parse(data.d);
            onSuccess(jsonData, status);
        },
        fail: onFail
    });
};
Run Code Online (Sandbox Code Playgroud)

我建议您在页面中包含json2.js解析器,以使JSON.stringify函数可以跨浏览器使用.


cee*_*yoz 6

您可以使用的另一个库是jquery-json.一旦包括:

var json = $.toJSON(your_object);
Run Code Online (Sandbox Code Playgroud)

  • 哦,谢谢你.缩小版本约为2k,它与jQuery(显然)很好地集成,如果你已经使用它(我是),这很好. (2认同)

Jef*_*nal 5

我见过的最方便的解决方案是通过使用开源JSON2.js库来解析和"字符串化"复杂的对象数据来简化这一过程.

这两篇优秀的文章详细介绍:

第二篇文章可能与您特别相关,尽管它使用以下签名调用Web 服务方法...

public void SendValues(List<string> list)
Run Code Online (Sandbox Code Playgroud)

...它演示了如何使用JSON2.js库来渲染List<string>javascript(使用jQuery,这个例子直接来自第二篇文章):

var list = ["a", "b", "c", "d"];
var jsonText = JSON.stringify({ list: list });

// The 'list' is posted like this

$.ajax({
    type: "POST",
    url: "WebService1.asmx/SendValues",
    data: jsonText,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function() { alert("it worked"); },
    failure: function() { alert("Uh oh"); }
});
Run Code Online (Sandbox Code Playgroud)

只需使用您的webmethod URL代替Web服务.