2010-09-28 13 views
6

cómo enviar datos jqGrid en formato json al servidor? ¿Debo usar cualquier biblioteca externa o script para lograr eso?jqgrid ¿cómo enviar todo el rowData en formato json al servidor?

Gracias!

Update1: licensePlateNumber adicional no debería estar ahí

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

Respuesta

18

Su enfoque de su other question está bien, pero jQuery.ajax tiene problemas para serializar matrices. La manera más fiable y estándar (ver here y here como ejemplos) que veo es serializar todos los datos jqGrid a JSON (por ejemplo con respecto de JSON.stringify función:

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

los nombres de parámetros jgGridData, customData y por lo puede elegir lo que desee.

+0

@Oleg ¡Gracias !, en customData puedo agregar la hora más antigua y la última? .... – paul

+0

@Oleg Tengo una pregunta rápida. ¿Por qué mi JSON se agrega nulo al principio? .update1 – paul

+1

@paul: en mis experimentos no tuve tal efecto. Probablemente la entrada provenga del encabezado donde existe checkbox utilizado para multiselección (seleccionar/deseleccionar todas las filas). Puede probar si la entrada existe y si existe eliminarla: 'if (! GridData [0] .licensePlateNumber) {gridData.splice (0, 0); } ' La pregunta sobre 'customData' supongo que lo resolvió usted mismo: puede enviar cualquier información como' early' o 'latesttime' que necesite. Puede agregar nuevas propiedades a 'gridData' con' gridData.earliest = "mis primeras"; 'o usar' data: {jGGridData: postData, first: "my first", latesttime: 123} ' – Oleg

Cuestiones relacionadas