Benutzer mit den meisten Antworten
How can I communicate between Java Script and C#

Frage
-
Antworten
-
Hallo,
So funktioniert jetzt die Übertragung auf beide Seiten :-). Danke für die Tipps.
Client
var jsonData = '{"measurementType": "diffusionCurrent", "filename": "test" }'; jQuery.ajax({ type: "POST", url: "/Home/Data", data: jsonData, contentType: "application/json", dataType: "json", success: function (result) { // some actions with the data }, error: function (error) { alert("There was an error posting the data to the server: " + error.responseText); }
Server
[AcceptVerbs(HttpVerbs.Post)] public JsonResult Data(string measurementType, string filename) { MeasurementData data = new MeasurementData(); int[,] tmpData = null; try { String path = Directory.GetCurrentDirectory(); Parser parser = new Parser(); string root = ConfigurationManager.AppSettings["dataRoot"]; // root P:\PublicAT\ApplData\Elymat tmpData = parser.getCurrentMeasurementMatrix(root + "\\8 Zoll\\192b291.elm", data); } catch (Exception e) { String message = e.Message; } for (int x = 0; x < tmpData.GetLength(0); x++) { for (int y = 0; y < tmpData.GetLength(1); y++) { data.SetData(x, y, tmpData[x, y]); } } JsonResult retval = new JsonResult(); retval.ContentEncoding = System.Text.Encoding.UTF8; retval.ContentType = "text/x-json"; retval.Data = data; return retval; }
Gruß,
Marko
Alle Antworten
-
Hallo Marko,
es gibt verschiedene Möglichkeiten, dass zu realisieren.
Am einfachsten ist es wohl, wenn du das Array direkt (natürlich in JS kompatibler Form) in die View schreiben lässt und so den Zugriff durch JS ermöglichst.
Eine andere (meiner Ansicht nach elegantere) Methode ist, dass betreffende Array im JSON Format zurück zu liefern. Dazu schreibst du dir einfach eine Action, die als Return keine View sondern JSON Daten enthält (Siehe: http://msdn.microsoft.com/en-us/library/ie/dd470587.aspx). Auf diese Action kannst du dann bequem via XMLHTTP Request von deinem JS aus zugreifen.
Wenn du ein wenig mehr zu deinem Projekt verraten kannst, lässt sich vielleicht noch eine elegantere Lösung finden.
Gruß Sebastian
-
Hallo Sebastian,
Danke für die schnelle Antwort. Ich bin noch ganz am Anfang mit meinem Projekt. Ich muss mich auch noch in die Webentwicklung einarbeiten. Ich werd mir das mit JSON einmal anschauen. Vielleicht kennst du ja noch ein paar Tutorials für Anfänger die ich mir anschauen kann.
Danke,
Marko
-
Hallo Marko,
ggfs. wäre es hier sinnvoll, sich mal jQuery.ajax anzuschauen. Über einen Webservice kannst Du problemlos komplexe Objekte in der JSON Notation übertragen (beide Richtungen).
<Script.Services.ScriptMethod( ResponseFormat:=ResponseFormat.Json )> _ Public Function GetRecords( ... ) As List( Of <DeineKlasse> ) Dim Result As New List( Of <DeineKlasse> ) Result.Add( New <DeineKlasse>( ... ) ) Result.Add( New <DeineKlasse>( ... ) ) ... Return Result End Function
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo,
So funktioniert jetzt die Übertragung auf beide Seiten :-). Danke für die Tipps.
Client
var jsonData = '{"measurementType": "diffusionCurrent", "filename": "test" }'; jQuery.ajax({ type: "POST", url: "/Home/Data", data: jsonData, contentType: "application/json", dataType: "json", success: function (result) { // some actions with the data }, error: function (error) { alert("There was an error posting the data to the server: " + error.responseText); }
Server
[AcceptVerbs(HttpVerbs.Post)] public JsonResult Data(string measurementType, string filename) { MeasurementData data = new MeasurementData(); int[,] tmpData = null; try { String path = Directory.GetCurrentDirectory(); Parser parser = new Parser(); string root = ConfigurationManager.AppSettings["dataRoot"]; // root P:\PublicAT\ApplData\Elymat tmpData = parser.getCurrentMeasurementMatrix(root + "\\8 Zoll\\192b291.elm", data); } catch (Exception e) { String message = e.Message; } for (int x = 0; x < tmpData.GetLength(0); x++) { for (int y = 0; y < tmpData.GetLength(1); y++) { data.SetData(x, y, tmpData[x, y]); } } JsonResult retval = new JsonResult(); retval.ContentEncoding = System.Text.Encoding.UTF8; retval.ContentType = "text/x-json"; retval.Data = data; return retval; }
Gruß,
Marko