7 messaggi dal 19 settembre 2017
Buonasera, il codice seguente viene utilizzato per salvare 3 colonne di dati provenienti da un file di testo, il tutto si trova all'interno di <HttpGet> che dovrebbe passare i dati tramite AJAX allo script dove viene utilizzato jQuery. Sono in difficoltà perché non riesco a capire come passare tali dati a jQuery dal momento che in PupilDataMatrix ho una matrice di 3 colonne e 159 righe, vorrei avere degli array contenenti tutti i dati delle colonne.

Grazie per l'aiuto.

Dim PupilDataMatrix As New List(Of List(Of String))
Dim RawDataMatrix As New List(Of List(Of String))
Dim tempString() As String
Dim jsonSerializer As New JavaScriptSerializer
For Each d In pupildata
PupilDataMatrix.Add(New List(Of String))
tempString = d.Split(Chr(9))
For i = 0 To tempString.Length - 1
Select Case i
Case 1, 3, 7 ' salva solo le colonne che vogliamo
PupilDataMatrix(PupilDataMatrix.Count - 1).Add(tempString(i))
Case 9
Exit For
End Select
Next
Next
Return jsonSerializer.Serialize(PupilDataMatrix)
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
se non stai avendo errori, si tratta solo di capire come leggere lato client il risultato restituito dal server.
Quindi, per prima cosa apri il pannello degli strumenti di sviluppo del browser (tasto F12) e vai nella scheda Rete/Network. Da lì vedrai passare la richiesta ajax che stai inviando al server. Facci doppioclick sopra e vedrai il contenuto della risposta del server. Il risultato è quello che ti aspetti di trovare?
Postalo qui, così ci ragioniamo su.


il tutto si trova all'interno di <HttpGet>

Se ho capito bene, tu hai un'applicazione ASP.NET MVC o WebAPI. Quale delle due?
Di solito non bisogna invocare jsonSerializer.Serialize, perché della serializzazione si occupa ASP.NET.

Inoltre, anche se è fattibile, personalmente non avrei usato una lista di liste, ma una lista di Pupil, ovvero una classe creata da me che ha dentro delle proprietà come FirstName, LastName e così via.

ciao,
Moreno

Enjoy learning and just keep making
7 messaggi dal 19 settembre 2017
Intanto ti ringrazio per l'aiuto.
Sto utilizzando WebAPI, i dati vengono prelevati correttamente dal file di testo. Mettendo un breakpoint su
Return jsonSerializer.Serialize(PupilDataMatrix) riesco a visualizzare il contenuto di ogni riga più precisamente tre numeri. Essendo alle prime esperienze con questo tipo di programmazione non so bene come dovrebbe essere il risultato atteso ma sembrerebbe quello cercato (ne ho riportato solo un pezzo)

[["-0.061000","6.181940","6.630503"],["-0.030000","6.145362","6.631053"],["0.001000","6.146325","6.653193"],["0.048000","6.167090","6.627065"],["0.079000","6.180978","6.656905"],["0.110000","6.132023","6.635315"],["0.142000","6.175890","6.624314"],["0.173000","6.185240","6.640679"],["0.204000","6.148662","6.624177"],["0.235000","6.185240","6.712186"]]
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
non sono del tutto convinto che quello che hai postato sia il reale contenuto della risposta.
Infatti, se usi questa istruzione:

Return jsonSerializer.Serialize(PupilDataMatrix)

...il metodo Serialize restituirà una stringa che verrà ulteriormente serializzata in json. Mi aspetto che il server restituisca questo, tra apici.
'[["-0.061000","6.181940","6.630503"],...]'


Prova così:
Return PupilDataMatrix


e lato client ti troverai come risultato un array di array. Scorrilo con un ciclo for.

ciao,
Moreno

Enjoy learning and just keep making
7 messaggi dal 19 settembre 2017
I dati sono riportati in questo modo, ieri sera avevo tralasciato un pezzo.

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
[["-0.061000","6.181940","6.630503"],["-0.030000","6.145362","6.631053"],["0.001000","6.146325","6.653193"],["0.048000","6.167090","6.627065"],["0.079000","6.180978","6.656905"],["0.110000","6.132023","6.635315"],["0.142000","6.175890","6.624314"],["0.173000","6.185240","6.640679"],["0.204000","6.148662","6.624177"],["0.235000","6.185240","6.712186"]]
</string>

La mia difficoltà però è quella di far "passare" i dati da vb a jquery, sono alle prime basi con questi programmi e non so bene come fare.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ok, infatti stai restituendo una stringa anziché un array di array. E' serializzata in XML anziché in JSON ma il fatto è quello.

Quindi, per prima cosa sostituisci questo:
Return jsonSerializer.Serialize(PupilDataMatrix) 


Con questo:
Return PupilDataMatrix


Poi disabilita il serializzatore XML, in modo che venga sempre usato quello JSON. Per farlo, aggiungi questo alla tua configurazione di ASP.NET Web API. Se hai costruito il tuo progetto a partire dal template di Visual Studio, dovrai inserirla nel file /App_Start/WebApiConfig.vb.
config.Formatters.Remove(config.Formatters.XmlFormatter)


Ora ricontrolla cosa sta restituendo il server. Dovrebbe essere l'array di array nudo e crudo formattato in json.
Se è così, lato client usa javascript e un ciclo for per iterare attraverso tutti gli elementi dell'array. Posta un po' di codice lato client e vediamo cosa hai fatto finora.

ciao,
Moreno

Enjoy learning and just keep making
7 messaggi dal 19 settembre 2017
La sostituzione che mi hai consigliato di fare mi da errore cioè mi dice che non è possibile convertire il valore di tipo List(Of List(Of String) in String.

Per il codice lato client avrei iniziato una cosa del genere:

function parametri() {
var matrix = [","];
var element=159;
var count=2;

$.ajax({
type: "GET",
url: "api/Pupil/Read",
contentType: "application/json; charset=utf-16",
dataType: "json",
success: function (response) {
if (!response) {
$("#message").text("Ci sono stati degli errori");
$("#message").addClass("text-danger");
} else

var obj = JSON.parse(response)

for (i = 0; i < element; i++)
for (k = 0; k < count; k++)

matrix[i, k] = i * k;


$("#main")[0].reset();
$("#MsgBox").modal({
backdrop: 'static',
keyboard: false
});
},
failure: function () {
alert("Problema di connessione col server");
}
});
}

Non so bene come passare la lunghezza delle righe e delle colonne ottenute su vb ai due cicli.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


La sostituzione che mi hai consigliato di fare mi da errore cioè mi dice che non è possibile convertire il valore di tipo List(Of List(Of String) in String.

Devi modificare anche il tipo restituito dalla tua action.
Posta il codice della tua action ASP.NET Web API per intero.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.