2016-06-07 8 views
7

पर खाली सरणी भेजना मैं वेबएपीआई में एक खाली जावास्क्रिप्ट सरणी [] पोस्ट करना चाहता हूं और इसे पूर्णांक की एक खाली सूची बनाना चाहता हूं। मैं यह भी चाहता हूं कि यदि मैं जावास्क्रिप्ट null को वेबएपीआई पर पोस्ट करता हूं तो यह पूर्णांक की सूची में शून्य को असाइन करता है।वेबपै

जे एस:

var intArray = []; 
$.ajax({ 
    type: 'POST', 
    url: '/api/ListOfInts', 
    data: {'' : intArray}, 
    dataType: 'json' 
}); 

C# WebAPI

[HttpPost] 
public void ListOfInts([FromBody]List<int> input) 

समस्या 1) Jquery {'' : []} डेटा भेजने के लिए पोस्ट पेलोड के रूप में मना कर दिया। जैसे ही मैं सरणी में कुछ जोड़ता हूं, यह {'' : [1,2,3]}

समस्या 2) Passing empty js array to controller gives null मैं जो भी पढ़ता हूं उसके आधार पर मुझे खाली सरणी पोस्ट करने के लिए भी मिलता है, यह सूची को शून्य के रूप में प्रारंभ करेगा। चर्चा किए गए समाधानों में यह है कि सूची हमेशा खाली के रूप में शुरू होती है लेकिन मुझे वह नहीं चाहिए। मैं चाहता हूं कि यह किसी मामले में शून्य हो (जब इसे शून्य/अपरिभाषित किया जाता है) और जब [] भेजा जाता है तो इसे खाली के रूप में प्रारंभ करना चाहिए।

संपादित करें: https://www.asp.net/web-api/overview/advanced/sending-html-form-data-part-1 के बारे में देखें कारण है कि मैं {'' : []}

+0

तुम सिर्फ डेटा भेजने की कोशिश की है: intArray? –

+0

हां, यह बिल्कुल काम नहीं करता है। वेबएपीआई को यह नहीं पता कि इसे कैसे संभालना है – LearningJrDev

+0

वेबएपी में, अनुरोध में शून्य और खाली के बीच अंतर करना मुश्किल हो सकता है। यदि आप किसी भी तरह से अपने आवेदन में किसी प्रकार के "राज्य" को सेट करने के लिए उपयोग कर रहे हैं, तो मैं पुनर्विचार करूँगा कि आप इसे कैसे कर रहे हैं। संभावित रूप से किसी प्रकार का ध्वज या कुछ भेजना जो सर्वर पर आपकी सूची को सही ढंग से प्रारंभ करेगा। – jensendp

उत्तर

1
data: {'' : intArray}, 

एक खाली कुंजी नाम का उपयोग कर रहा JSON में अनुमति नहीं है।

बस सरणी स्वयं भेजें।

data: intArray, 
+0

यह वैल्यूटाइप – LearningJrDev

+0

भेजते समय वेबएपीआई द्वारा आवश्यक है [इस सवाल और उत्तर] (http://stackoverflow.com/q/33254385/548304) के अनुसार, खाली कुंजी की अनुमति है। – FriendlyGuy

21

उपयोग JSON.stringify(intArray) और contentType: 'application/json' काम करता है मेरे लिए:

$.ajax({ 
    url: "/api/values", 
    method: "POST", 
    contentType: 'application/json', 
    data: JSON.stringify([]) 
}); 

enter image description here

$.ajax({ 
    url: "/api/values", 
    method: "POST", 
    contentType: 'application/json', 
    data: null 
}); 

enter image description here

$.ajax({ 
     url: "/api/values", 
     method: "POST", 
     contentType: 'application/json', 
     data: JSON.stringify([1, 2, 3]) 
}); 

enter image description here

1

1. JSON स्ट्रिंग को जावास्क्रिप्ट ऑब्जेक्ट में कनवर्ट करने के लिए JSON.stringify() का उपयोग करें।

2. सामग्री का उपयोग करें टाइप करें: 'एप्लिकेशन/जेसन' क्योंकि यह JSON के लिए सही एमआईएम मीडिया प्रकार है। What is the correct JSON content type?

डेटाप्रकार आवश्यक नहीं है

डेटा: JSON.stringify (intArray), contentType: 'आवेदन/json'

संबंधित मुद्दे