2015-01-23 17 views
9

Làm cách nào để tôi có thể đăng mảng JSON lên API Web? Nó hoạt động cho một đối tượng.cách đăng mảng đối tượng json lên trang web api

Đây là những gì tôi đã thử, nhưng bộ điều khiển có vẻ như đang quay trở lại 0 thay vì mong đợi 3.

Đây là JSON của tôi:

var sc = [{ 
       "ID": "5", 
       "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a", 
       "Table_ID": "Allergy_Trns", 
       "Checksum": "-475090533", 
       "LastModified": "2015-01-22T20:08:52.013" 
      }, 
      { 
       "ID": "5", 
       "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a", 
       "Table_ID": "Allergy_Trns", 
       "Checksum": "-475090533", 
       "LastModified": "2015-01-22T20:08:52.013" 
      }, 
      { 
       "ID": "5", 
       "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a", 
       "Table_ID": "Allergy_Trns", 
       "Checksum": "-475090533", 
       "LastModified": "2015-01-22T20:08:52.013" 
      }];   

AJAX gọi:

$.ajax({ 
      url: urlString, 
      type: 'POST', 
      data: sc, 
      dataType: 'json', 
      crossDomain: true, 
      cache: false, 
      success: function (data) { console.log(data); } 
     }); 

Web điều khiển API:

[HttpPost] 
public string PostProducts([FromBody]List<SyncingControl> persons) 
{ 
    return persons.Count.ToString(); // 0, expected 3 
} 
+0

Tôi không tưởng tượng đây là nó, nhưng bạn đã thử sử dụng công cụ dev trong trình duyệt để chỉ xác nhận rằng tải trọng thậm chí còn được gửi đi? Tôi không biết gì về Web API vì vậy có lẽ đây không phải là nguyên nhân có khả năng nhất, nhưng tôi có thể tưởng tượng thiết lập phía máy khách 'sc' bằng' null' trước khi yêu cầu bị tắt, có vẻ như nó có thể làm điều này. –

+0

Bất kỳ lỗi nào trong bảng điều khiển trình duyệt? Bạn đang thiếu một dấu ngoặc kép trong đối tượng người đầu tiên trong sc. –

+0

không có bất kỳ lỗi nào trên bảng điều khiển –

Trả lời

16

Có một lỗi trong json Table_ID": "Allergy_Trns" nên "Table_ID": "Allergy_Trns".

Thiếu trích dẫn kép.

Cập nhật

Bạn cần phải chắc chắn rằng bạn đang gửi thông số của bạn như json như sau:

$.ajax({ 
     url: urlString, 
     type: 'POST', 
     data: JSON.stringify(sc), 
     dataType: 'json', 
     contentType: 'application/json', 
     crossDomain: true, 
     cache: false, 
     success: function (data) { console.log(data); } 
    }); 

Thông báo các JSON.stringify(sc), @herbi một phần là đúng quá về cách xác định một loại nội dung.

Screen grab

**Screen grab**

+0

hutchonoid: nó bị nhỡ ở đây không có trong mã của tôi xin lỗi vì điều đó. –

+0

cảm ơn u rất nhiều thân yêu ...... công việc của nó .... u rocked .. cảm ơn rất nhiều. –

+0

@RanvijaySingh Không có probs, cheers. – hutchonoid

2

Bạn phải thêm tiêu đề content-type để yêu cầu ajax, do đó WebAPI có thể hiểu được những yêu cầu và sử dụng định dạng đúng để deserialize dữ liệu:

$.ajax({ 
 
      url: urlString, 
 
      type: 'POST', 
 
      data: sc, 
 
      dataType: 'json', 
 
      contentType: "application/json", 
 
      crossDomain: true, 
 
      cache: false, 
 
      success: function (data) { console.log(data); } 
 
     });

+0

đã thử nhưng không hoạt động –

+0

xin lỗi, đó là "contentType", không phải "content-Type" – Herbi

+0

vâng tôi đã thử với contentType không phải kiểu nội dung –

0

Bạn có thể đặt các Content-Type trên beforeSend đó sẽ bảo đảm rằng dữ liệu json của bạn phù hợp với đối tượng máy chủ của bạn

$.ajax({ 
     beforeSend: function (xhr) { 
      xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
     }, 
      url: urlString, 
      type: 'POST', 
      data: sc, 
      dataType: 'json', 
      contentType: "application/json", 
      crossDomain: true, 
      cache: false, 
      success: function (data) { console.log(data); } 
     }); 
Các vấn đề liên quan