שליחה של Complex Type ו – Array ל – Web Service בפורמט JSON

23 בנובמבר 2009

אין תגובות

 


בהמשך לפוסט Web Service -> JSON -> JavaScript. קל פשוט ונהדר אני מדגים שם איך לפנות ל – WebSerive ולקבל את התשובות בפורמט JSON,

 

בפוסט הנוכחי אני אדגים איך פונים ל – WebService שמצפה לקבל טיפוס שהוא לא מה – Primitive Types.

 

נניח שיש WebService שנראה כך: (לא לשכוח להוריד את ההערה מ – ScriptService – אחרת אי אפשר להפעיל מ – JS)

 



[WebService(Namespace = "http://tempuri.org/")]


[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]


[ToolboxItem(false)]


[ScriptService]




public class WebService1 : WebService


{


 


    [WebMethod]


    public void SetPerson(Person person)


    {


        // Do Logic…..


    }


}


 


public class Person


{


    public int Id { get; set; }


    public string Name { get; set; }


    public string[] Childern { get; set; }


}


 

יש את המתודה ב – JS (היא מוסברת בפוסט הקודם)

 



function GetSynchronousJSONResponse(url, postData) {


    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");


 


    xmlhttp.open("POST", url, false);


    xmlhttp.setRequestHeader("Content-Type",


       "application/json; charset=utf-8");


 


    xmlhttp.send(postData);


    var responseText = xmlhttp.responseText;


    return responseText;


}


 

כעת מה שנשאר לנו לעשות זה את הדבר הבא:

 

למעשה ה – postData צריך להיראות כך:

 



var jsonPostData = '{person: {Id: 10, Name: "noam", Childern: ["kivi", "banana", "orange"]}}';


 

בבנייה דינמית נעשה את זה כך:

 



function SetPerson() {


    var id = 10;


    var name = 'noam';


    var childern = new Array();


    childern[0] = 'kivi';


    childern[1] = 'banana';


    childern[2] = 'orange';


 


 


    var jsonPostData = '{person: ' +


                            '{Id: ' + id +


                            ', Name: "' + name +


                            '", Childern : ["' + childern[0] +


                                           '","' + childern[1] +


                                           '","' + childern[2] +


                                           '"]}}';


 


    GetSynchronousJSONResponse("http://localhost:49395/WebService1.asmx/SetPerson",


                                jsonPostData);


}


 

וזהו, נוכל להגיע לשרת עם האובייקט שלנו שנשלח מ – JS

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *