2010-09-28 11 views
6

come inviare i dati jqGrid in formato json al server? Devo utilizzare qualsiasi libreria o script esterno per raggiungere questo obiettivo?jqgrid howto inviare tutti i rowData in formato json al server?

Grazie!

update1: extra licensePlateNumber non dovrebbe essere lì

[ 
    { 
     "licensePlateNumber": "" 
    }, 
    { 
     "licensePlateNumber": "0000000000000029000721804", 
     "sku": "795127", 
     "description": "", 
     "caseQuantity": "24", 
     "isHeld": "false", 
     "expirationDate": "Jul 22, 2010 12:00:00 AM" 
    }, 
    { 
     "licensePlateNumber": "0000000000000029000722323", 
     "sku": "795127", 
     "description": "", 
     "caseQuantity": "24", 
     "isHeld": "false", 
     "expirationDate": "Jul 22, 2010 12:00:00 AM" 
    }, 
    { 
     "licensePlateNumber": "0000000000000029000722669", 
     "sku": "795127", 
     "description": "", 
     "caseQuantity": "24", 
     "isHeld": "false", 
     "expirationDate": "Jul 22, 2010 12:00:00 AM" 
    } 
] 

risposta

18

Il tuo approccio dal other question è OK, ma jQuery.ajax ha problemi per serializzare gli array. Il modo più affidabile e standard (vedi here e here come esempi) che vedo è di serializzare tutti i dati jqGrid a JSON (ad esempio rispetto di JSON.stringify funzione:

$("#sendButton").click(function(){ 
    var gridData = jQuery("#list").getRowData(); 
    var postData = JSON.stringify(gridData); 
    alert("JSON serialized jqGrid data:\n" + postData); 
    $.ajax({ 
     type: "POST", 
     url: "/cpsb/internalOrderList.do", 
     data : { 
      jgGridData: postData, 
      customData: "bla bla" 
     }, 
     dataType:"json", 
     contentType: "application/json; charset=utf-8", 
     success: function(response, textStatus, xhr) { 
      alert("success"); 
     }, 
     error: function(xhr, textStatus, errorThrown) { 
      alert("error"); 
     } 
    }); 
}); 

i nomi dei parametri jgGridData, customData e così on, puoi scegliere quello che ti piace

+0

@Oleg grazie! quindi in customData posso aggiungere l'ora più recente e l'ultima? .... – paul

+0

@Oleg Ho una domanda veloce.perché il mio JSON è appeso null all'inizio. .update1 – paul

+1

@paul: Nei miei esperimenti non ho avuto questo effetto. Probabilmente la voce proviene dall'intestazione dove esiste la casella di controllo usato per il multiselect (seleziona/deseleziona tutte le righe). È possibile verificare se la voce esiste e se esiste rimuoverla: 'if (! GridData [0] .licensePlateNumber) {gridData.splice (0, 0); } '. La domanda su 'customData' Suppongo che tu abbia risolto te stesso: puoi inviare qualsiasi dato come" prima "o" latesttime "di cui hai bisogno. Puoi aggiungere una nuova proprietà a 'gridData' con' gridData.earliest = "my earliest"; 'oppure usa' data: {jgGridData: postData, meno recente: "la mia prima ora", l'ultima volta: 123} ' – Oleg

Problemi correlati