2010-09-28 31 views
6

cách gửi dữ liệu jqGrid theo định dạng json tới máy chủ? Tôi có phải sử dụng bất kỳ thư viện hoặc tập lệnh bên ngoài nào để đạt được điều đó không?jqgrid howto gửi tất cả rowData ở định dạng json tới máy chủ?

Cảm ơn!

Update1: thêm licensePlateNumber không nên có mặt ở đó

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

Trả lời

18

cách tiếp cận của bạn từ other question của bạn là OK, nhưng jQuery.ajax có vấn đề để serialize mảng. Cách đáng tin cậy nhất và tiêu chuẩn (xem herehere làm ví dụ) mà tôi thấy là để serialize tất cả dữ liệu jqGrid để JSON (ví dụ đối với JSON.stringify chức năng với:

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

tên của thông số jgGridData, customData và do đó trên, bạn có thể chọn bất cứ điều gì bạn thích.

+0

@ Cảm ơn! Vì vậy, trong customData tôi có thể nối thêm thời gian sớm nhất và mới nhất? .... – paul

+0

@Oleg Tôi có một câu hỏi nhanh.khi JSON của tôi là thêm null lúc beggining. .update1 – paul

+1

@paul: Trong các thử nghiệm của tôi, tôi không có hiệu ứng như vậy. Có lẽ mục nhập đến từ hộp kiểm tiêu đề tồn tại được sử dụng cho nhiều lựa chọn (chọn/bỏ chọn tất cả các hàng). Bạn có thể kiểm tra xem mục nhập có tồn tại không và nếu tồn tại, hãy xóa nó: 'if (! GridData [0] .licensePlateNumber) {gridData.splice (0, 0); } '. Câu hỏi về 'customData' tôi cho rằng bạn đã tự giải quyết: bạn có thể gửi bất kỳ dữ liệu nào như' sớm nhất 'hoặc' mới nhất' mà bạn cần. Bạn có thể thêm thuộc tính mới vào 'gridData' với' gridData.earliest = "sớm nhất của tôi"; 'hoặc sử dụng' dữ liệu: {jgGridData: postData, sớm nhất: "của tôi sớm nhất", latesttime: 123} ' – Oleg

Các vấn đề liên quan