2015-01-23 9 views
9

पर पोस्ट करने के लिए कैसे करें मैं एक वेब एपीआई में JSON सरणी कैसे पोस्ट कर सकता हूं? यह एक वस्तु के लिए काम कर रहा है।json ऑब्जेक्ट सरणी को वेब एपीआई

यह मैंने कोशिश की है, लेकिन नियंत्रक 3 अपेक्षाकृत 0 लौट रहा प्रतीत होता है।

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 कॉल:

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

वेब एपीआई नियंत्रक:

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

मैं कल्पना नहीं है यह यह है, लेकिन आप के लिए ब्राउज़र में देव उपकरण का उपयोग कर की कोशिश की है बस पुष्टि करें कि पेलोड भी भेजा जा रहा है? मुझे वेब एपीआई के बारे में कुछ नहीं पता है, इसलिए शायद यह सबसे संभावित कारण नहीं है, लेकिन मैं कुछ क्लाइंट-साइड सेटिंग 'एससी' की कल्पना कर सकता हूं, अनुरोध से पहले 'शून्य' के बराबर है, ऐसा लगता है कि ऐसा हो सकता है। –

+0

ब्राउज़र कंसोल में कोई त्रुटि? आप स्कैन में पहली व्यक्ति ऑब्जेक्ट में एक डबल कोट खो रहे हैं। –

+0

कंसोल –

उत्तर

16

है json Table_ID": "Allergy_Trns" में एक त्रुटि "Table_ID": "Allergy_Trns" होना चाहिए

यह मेरा JSON है।

डबल कोट गुम है।

अद्यतन

आप सुनिश्चित करें कि आप json के रूप में अपने मानकों को भेज रहे हैं इस प्रकार बनाने की जरूरत है:

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

सूचना JSON.stringify(sc), @herbi भी किसी सामग्री प्रकार निर्दिष्ट करने के बारे आंशिक रूप से सही है।

स्क्रीन हड़पने

**Screen grab**

+0

hutchonoid पर कोई त्रुटि नहीं है: इसके लिए मेरे कोड में यह याद नहीं है इसके लिए खेद है। –

+0

आपको बहुत बहुत धन्यवाद ..... इसका काम .... तुम चले गए .. बहुत बहुत धन्यवाद। –

+0

@ रणवीजसिंह कोई जांच नहीं, चीयर्स। – hutchonoid

2

आप ajax अनुरोध करने के लिए सामग्री प्रकार शीर्ष लेख जोड़ने के लिए है, ताकि वेबएपीआई अनुरोध को समझते हैं और डेटा deserialize करने के लिए सही फ़ॉर्मेटर उपयोग करने में सक्षम है:

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

+0

ने कोशिश की लेकिन –

+0

काम नहीं कर रहा है, यह "सामग्री टाइप" है, न कि "सामग्री-प्रकार" – Herbi

+0

हाँ मैंने सामग्री के साथ प्रयास किया सामग्री प्रकार नहीं –

0

आप beforeSendपर सामग्री प्रकार जो कि आपके json डेटा आपके सर्वर ऑब्जेक्ट के साथ मेल खाता है बीमा होगा सेट कर सकते हैं

$.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); } 
     }); 
संबंधित मुद्दे