2015-01-23 27 views
9

JSON dizisini Web API'sine nasıl gönderebilirim? Tek bir nesne için çalışıyor.json nesne dizisini web api'ye nasıl gönderilir

Denediğim budur, ancak denetleyici, beklenen 3 yerine 0 döndürüyor gibi görünüyor.

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 çağrı:

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

Web API kontrolör: Orada

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

bu onu hayal tutmazsa json veri sunucu nesnesi ile eşleştiğini sigorta olacaktır İçerik-Type beforeSend ayarlayabilirsiniz, ancak tarayıcıda dev araçlarını kullanarak denedin sadece yükün gönderildiğini doğrulayın? Web API hakkında hiçbir şey bilmiyorum, bu belki de en olası neden değil, ancak istemcinin yanmasına başlamadan önce istemci tarafı ayarı 'sc'' null '' null' diye düşünebilirim. –

+0

Tarayıcı konsolundaki hatalar var mı? Sc'teki ilk kişi nesnesinde çifte fiyat teklifi kaçırıyorsunuz. –

+0

konsolunda herhangi bir hata yok –

cevap

16

json Table_ID": "Allergy_Trns" bir hata "Table_ID": "Allergy_Trns" olmalıdır

Bu benim JSON olduğunu.

Eksik çift alıntı.

Güncelleme Sen aşağıdaki gibi json olarak Parametrelerinizi gönderme emin olmak gerekir

:

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

Bildirim JSON.stringify(sc), @herbi de bir içerik türünü belirtme hakkında kısmen doğrudur.

Ekran kapmak

**Screen grab**

+0

hutchonoid: Buradaki kodum için kaçırılmamış. –

+0

teşekkürler çok canım ...... onun işi .... u sarstı .. çok teşekkürler. –

+0

@RanvijaySingh Hiçbir probs, şerefe. – hutchonoid

2

Sen WebAPI veri serisini isteğini anlamak ve doğru biçimlendirici kullanabilir, böylece ajax isteği içerik tipi başlığını eklemek zorunda:

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

+0

çalıştı ama çalışmadı –

+0

üzgünüm, "contentType" değil, "content-Type" değil – Herbi

+0

evet with contentType değil content-Type –

0

Sen

$.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); } 
     }); 
İlgili konular