החזרת JSONP ע"י השרת בC#
-
האם למישהו יש ניסיון עם זה ויכול להמליץ איך כדאי להחזיר את הJSON כפונקציה ע"י השרת.
ראיתי את החבילה הזאת.
האם למישהו יש ניסיון איתה, או שממליץ על דרכים אחרות.
ובכלל אשמח אם מישהו ירחיב את דעתי ויסביר לי (או יפנה אותי למקור שעושה סדר בכל הבלאגן..) מה ההבדל בין הדברים הבאים: WCF, API Controler WebService וכל הדברים הללו. האם חלק (WCFׂ) זה בעצם טכנולוגיות/פלטפורמות ישנות שיצאו משימוש?תודה רבה!
פורסם במקור בפורום CODE613 ב16/11/2015 21:25 (+02:00)
-
jsonp זה סה"כ json עטוף בקריאה לפונקציה, ששמה יכול להיות קבוע או על פי פרמטר.
הcontent-type הוא js רגיל. אז אתה יכול לכתוב ככה:public ActionResult Example(string callback) { var obj = new {a = 123}; var json = Json.Encode(obj); return JavaScript(callback + "(" + json + ")"); }
ובכלל אשמח אם מישהו ירחיב את דעתי ויסביר לי (או יפנה אותי למקור שעושה סדר בכל הבלאגן..) מה ההבדל בין הדברים הבאים: WCF, API Controler WebService וכל הדברים הללו. האם חלק (WCFׂ) זה בעצם טכנולוגיות/פלטפורמות ישנות שיצאו משימוש?
תודה רבה!
Web Service זה מושג מופשט למערכת שבנוייה לקבל אינטראקציה מתוכנות - לא מאנשים. שזה אומר דילוג על החלק הויזואלי.
יש הרבה דרכים שמממשים את הרעיון של web service. אחת מהם זה Web Api שזה גירסת ASP.NET MVC ממוקדת לצרכי API.WCF זה טכנלוגייה חיה וקיימת ונצרכת. אינני בקיא במה שהיא מספקת אבל זאת אדע שהיא מפשטת תקשורת בין תוכנות (מרוחקות או על אותו המחשב) ותומכת במגוון פרוטוקלים (לעומת web api שזה נטו http) ובמגוון קידודים (כמו בינארי שזה חסכני). בגדול הweb api פשוט ונוח יותר.
פורסם במקור בפורום CODE613 ב17/11/2015 15:37 (+02:00)
-
@דוד ל.ט.
jsonp זה סה"כ json עטוף בקריאה לפונקציה, ששמה יכול להיות קבוע או על פי פרמטר.
הcontent-type הוא js רגיל. אז אתה יכול לכתוב ככה:public ActionResult Example(string callback) { var obj = new {a = 123}; var json = Json.Encode(obj); return JavaScript(callback + "(" + json + ")"); }
עשיתי "העתק-הדבק" לקוד, אך משום מה זה לא עובד..
בקונטרולר רגיל (שיורש מController), הוא מסמן לי שגיאה על המתודה Json.encode, וזה לשונו:'System.Web.Mvc.Controller.Json(object, string, System.Text.Encoding, System.Web.Mvc.JsonRequestBehavior)' is a 'method', which is not valid in the given context
בקונטרולר של API (שיורש מ System.Web.Http.ApiController) מלבד השגיאה הזאת הוא מסמן לי שגיאה גם על ה - JavaScript
וכותב:The name 'JavaScript' does not exist in the current context.
לגבי זה חשבתי שאולי זה מחמת התנגשות של מרחבי שמות system.web.mvc עם system.web.http כפי שאכן אירע לי לגבי דברים אחרים..
אולם, אע"פ שמחקתי את הUsing של הhttp וצירפתי זאת מקומית למה שהיה צריך - זה לא עזר..
אשמח לעזרה..
תודה רבה רבה מראש!!פורסם במקור בפורום CODE613 ב18/11/2015 09:56 (+02:00)
-
לגבי הבעיה הראשונה כתוב ככה:
var json = System.Web.Helpers.Json.Encode(obj);
אם לא עובד אז סימן שהספריה json.NET לא מותקנת.
לגבי הבעיה השניה, אכן אין בWebApiControler פונקציה מובנית להחזרת JS. אז ידנית:
public HttpResponseMessage Example(string callback) { var obj = new {a = 123}; var json = Json.Encode(obj); var js = callback + "(" + json + ")"; HttpResponseMessage response = Request.CreateResponse(System.Net.HttpStatusCode.OK, js, new TextPlainFormatter()); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/javascript"); return response; }
פורסם במקור בפורום CODE613 ב18/11/2015 15:23 (+02:00)