【问题标题】:Json ajax with parameter passing带参数传递的 Json ajax
【发布时间】:2011-06-30 12:11:08
【问题描述】:
function BindJson() {
        $.ajax({
            type: "POST",
            url: "NewPage.aspx/SerializeJson",
            data: "{}",
            contentType: "application/json",
            dataType: "json",
            success: function (data1) {
                alert(data1);
            }
        })
    }
    [WebMethod]
        public static string SerializeJson()
        {
            JavaScriptSerializer js = new JavaScriptSerializer();
            //Person p2 = js.Deserialize<Person>(str);
            return "";
        }

如何将参数作为数据传递给我的 serializeJson 函数?

【问题讨论】:

  • 将json放入data参数中
  • 我想传递如下的 json 数据:- { "firstName": "Denny", "lastName": "Cherian", "department": "Microsoft PSS", "address": { “addressline1”:“Microsoft India GTSC”,“addressline2”:“PSS - DSI”,“city”:“Bangalore”,“state”:“Karnataka”,“country”:“India”,“pin”:560028 }, "技术": ["IIS", "ASP.NET", "JavaScript", "AJAX"] }
  • 这些值来自html控件?
  • 不。我已将它们存储在变量中
  • @sly_Chandan:您应该在这里分享您的解决方案,以便其他人可以从中受益。

标签: jquery asp.net json


【解决方案1】:

这对你有用(下面的完整工作代码示例)。关键是传入一个 Person 对象。此外,我使用了一个简单的 Web 服务 (myService.asmx) 而不是一个 aspx 页面。如果不需要,为什么还要为额外的开销烦恼?

关键是在客户端创建一个Person对象,然后使用JSON.stringify将Person对象传递给webservice。

Javascript

<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js"></script>
<script type="text/javascript">
    function BindJson() {
        $.ajax({
            type: "POST",
            url: "myService.asmx/SerializeJson",
            data: JSON.stringify({ person:{ firstName: "Denny", lastName: "Cherian", department: "Microsoft PSS", address: { addressline1: "Microsoft India GTSC", addressline2: "PSS - DSI", city: "Bangalore", state: "Karnataka", country: "India", pin: "560028" }, technologies: ["IIS", "ASP.NET", "JavaScript", "AJAX"] }}),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data1) {
                alert(data1.d);
            },
            error: function (request, status, errorThrown) {
                alert(status);
            }
        });
    }

    $(document).ready(function() {
        BindJson();    
    });
</script>

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace TestProject
{
    /// <summary>
    /// Summary description for myService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]
    public class myService : System.Web.Services.WebService
    {

        [WebMethod]
        public string SerializeJson(Person person)
        {
            return "Success";
        }

        public class Person
        {
            public string firstName { get; set; }
            public string lastName { get; set; }
            public string department { get; set; }
            public Address address { get; set; }
            public string[] technologies { get; set; }
        }

        public class Address
        {
            public string addressline1 { get; set; }
            public string addressline2 { get; set; }
            public string city { get; set; }
            public string state { get; set; }
            public string country { get; set; }
            public string pin { get; set; }            
        }
    }
}

【讨论】:

    【解决方案2】:

    您可以使用 jQuery 提供的Serialize() 方法来传递数据。

    请看这个article

    【讨论】:

    • 为什么要给我发关于劫持的帖子?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多