Hice esta aplicación de API web usando ASP.NET y C#
y la respuesta de salida de esta API es un objeto Json Para poder en una aplicación de script java Llame a esta API con Ajax
este es el código C#:
public string Get() { string Sql3 = "(SELECT top 10 Raspberry_ID, Raspberry_name, Speaker_Name, currently_playing_song,Speaker_Volume,Speaker_Availability, Speaker_Mute,Date_Time,Speaker_Status, Row_Number() over (order by Date_Time desc) as RowNumber FROM Raspi_speaker)T"; string Sql2 = "Speaker_Volume, Speaker_Status, Speaker_Availability, Speaker_Mute, Date_Time, RowNumber FROM"; string Sql = "SELECT top 10 Raspberry_ID, Raspberry_name, Speaker_Name, currently_playing_song," + Sql2 + Sql3; SqlDataAdapter adap = new SqlDataAdapter(Sql, conn); string[] Result = new string[10]; DataTable dataTable = new DataTable(); adap.Fill(dataTable); int i = 0; foreach (DataRow dataR in dataTable.Rows) { string Val; Val = Convert.ToString(dataR["Raspberry_name"]); Result[i] = Val; i++; } Object[] obj = { new { RasspiName = Result} }; if (dataTable.Rows.Count > 0) { return JsonConvert.SerializeObject(obj); } return "No Data Found"; } }y la salida es este objeto Json:
[{"RasspiName":["Crea_RASPI SONOS","Crea_RASPI SONOS","Crea_RASPI SONOS","Crea_RASPI SONOS","Trais-Sonos-Pi","Trais-Sonos-Pi","Crea_RASPI SONOS","Crea_RASPI SONOS","Crea_RASPI SONOS","Crea_RASPI SONOS"]}]El código JavaScript es:
function Ajax(){ var request = new XMLHttpRequest(); request.onreadystatechange = function(){ if(request.readyState == 4 && (request.status == 200)) { var DataR = []; DataR =JSON.parse(request.responseText) console.log(DataR) } } var url = 'http://localhost:41839/api/Musik'; request.open('GET',url ,true); request.send() }Mi problema es que trata el objeto Json como texto Aunque utilicé ((JSON.parse)) Método en Java Script... Por ejemplo, cuando escribo ((console.log(DataR[ 0 ])) obtengo solo una letra por ejemplo [ En lugar de Valor cuando escribo ((console.log(DataR[ 0 ].RasspiName)) obtengo Indefinido
No sé si proplem de código C# o de Java Script
espero su ayuda muchas gracias
No entiendo cómo definiste el método API Get en el ejemplo del código de back-end, pero creo que deberías configurar algo como esto:
[WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] public string GetDashboardInfo() { //your code here }Puede usar Ajax para realizar la solicitud GET:
function GetData() { try { $.ajax({ type: "GET", contentType: "application/json; charset=utf-8", url: "http://localhost:41839/api/Musik", data: '', dataType: "json", success: OnSuccessGetData, error: OnErrorGetData }); } catch (ex) { console.log("GetData(): " + ex.toString()); } } function OnSuccessGetData(result) { try { if (result.d !== "" && result.d !== null) { var dataSourceJson = JSON.parse(result.d); } else { console.log("OnSuccessGetData: result is null!"); } } catch (ex) { console.log("OnSuccessGetData(): " + ex.toString()); } } function OnErrorGetData(httpRequest, textStatus, errorThrown) { try { console.log("OnErrorGetDashboardData: " + textStatus + " " + errorThrown + " " + httpRequest); } catch (ex) { console.log("OnErrorGetDashboardData(): " + ex.toString()); } }Más sobre JavaScript Obtener solicitud aquí .