2010-09-28 14 views
6

jak wysłać dane jqGrid w formacie json do serwera? Czy do tego celu muszę użyć zewnętrznej biblioteki lub skryptu?jqgrid howto wysłać wszystkie rowsData w formacie json do serwera?

Dzięki!

update1: ekstra licensePlateNumber nie powinno tam być

[ 
    { 
     "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" 
    } 
] 

Odpowiedz

18

swoje podejście z other question jest OK, ale ma problemy jQuery.ajax do serializacji tablic. Najbardziej niezawodny i standardowy sposób (patrz here i here przykłady) które patrz jest serializacji wszystkie dane jqGrid JSON (na przykład w odniesieniu do JSON.stringify funkcję:

$("#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"); 
     } 
    }); 
}); 

Nazwy parametrów jgGridData, customData itd na, możesz wybrać, co chcesz.

+0

@Oleg dzięki! więc w customData mogę dołączyć najwcześniej i najnowszy czas? .... – paul

+0

@ Oleg mam szybkie pytanie.Dlaczego mój JSON jest dodawanie null na początku. .update1 – paul

+1

@paul: W moich eksperymentach nie miałem takiego efektu. Prawdopodobnie wpis pochodzi z nagłówka, gdzie istnieje pole wyboru używany do multiselect (zaznacz/odznacz wszystkie wiersze). Możesz sprawdzić, czy wpis istnieje i czy istnieje, usunąć go: 'if (! GridData [0] .licensePlateNumber) {gridData.splice (0, 0); } '. Pytanie o 'customData' Przypuszczam, że rozwiązałeś się: możesz wysyłać dowolne dane, takie jak' najwcześniej' lub 'latesttime', których potrzebujesz. Możesz dodać nowe właściwości do 'gridData' z' gridData.earliest = "moje najwcześniejsze"; 'lub użyć' data: {jgGridData: postData, najwcześniej: "moje najwcześniej", latesttime: 123} ' – Oleg

Powiązane problemy