2013-02-26 17 views
13

मैं इस तरह एक डेटा संरचना है:जेएसन जैसे फ्लास्क को डेटा संरचना कैसे पोस्ट करें?

enter image description here

मैं $ .ajax द्वारा सर्वर पर भेजने का प्रयास कर रहा हूँ:

$.ajax({ 
    type: 'POST', 
    data: post_obj, //this is my json data 
    dataType: 'json', 
    url: '', 
    success: function(e){ 
     console.log(e); 
    } 
}); 

और मैं कुप्पी से सर्वर में इसे पाने के लिए चाहते हैं: title = request.form['title'] ठीक काम कर रहा है!

लेकिन मुझे content कैसे मिल सकता है?

request.form.getlist('content') काम नहीं करता है। आप का निरीक्षण पोस्ट jQuery द्वारा प्रस्तुत किया जा रहा है डी

+0

कैसे के बारे में 'सामग्री = Request.Form [ 'सामग्री' ] '? :) – favoretti

+0

@favoretti काम नहीं कर सकता: 'BadValueException: प्रकार "सामग्री" के क्षेत्र के लिए खराब मूल्य। कारण: "मान Robin

+0

ठीक है, और request.form.getlist ('content') 'वापसी' क्या करता है? 'काम नहीं है' के बारे में थोड़ा और स्पष्ट मदद कर सकता है। दुर्भाग्य से परीक्षण करने के लिए यहाँ एक फ्लास्क आसान नहीं है। – favoretti

उत्तर

16

आप जेएसओएन की बजाय क्वेरी स्ट्रिंग के रूप में अपना डेटा एन्कोड कर रहे हैं। फ्लास्क JSON एन्कोडेड डेटा को संसाधित करने में सक्षम है, इसलिए इसे इस तरह भेजने के लिए और अधिक समझदारी होती है।

$.ajax({ 
    type: 'POST', 
    // Provide correct Content-Type, so that Flask will know how to process it. 
    contentType: 'application/json', 
    // Encode your data as JSON. 
    data: JSON.stringify(post_obj), 
    // This is the type of data you're expecting back from the server. 
    dataType: 'json', 
    url: '/some/url', 
    success: function (e) { 
     console.log(e); 
    } 
}); 

सर्वर साइड डेटा पर request.json (पहले से ही डीकोड) के माध्यम से पहुंचा जा सकता है: यहाँ आप क्लाइंट की तरफ क्या करने की जरूरत है

content = request.json['content'] 
+0

ग्रेट! धन्यवाद :) – Robin

2

, आप सबसे अधिक संभावना देखेंगे कि content वास्तव में किया जा रहा है:

enter image description here

धन्यवाद एक बहुत:

यह फ़ायरबग में पोस्ट डेटा है content[] के रूप में पारित किया गया। फ्लास्क के request ऑब्जेक्ट से इसे एक्सेस करने के लिए, आपको request.form.getlist('content[]') का उपयोग करने की आवश्यकता होगी।

यदि आप इसे content के माध्यम से पारित करना चाहते हैं, तो आप अपने $.ajax() कॉल पर traditional: true जोड़ सकते हैं।

इसके बारे में अधिक जानकारी http://api.jquery.com/jQuery.ajax/ के 'डेटा' और 'पारंपरिक' खंडों में मिल सकती है।

+0

आपका उत्तर धन्यवाद। – Robin

+0

जब मैं 'पारंपरिक: सत्य' $ .ajax सेट करता हूं। मुझे सर्वर में '[ऑब्जेक्ट ऑब्जेक्ट]' जैसी स्ट्रिंग मिली है ... लेकिन यह वही नहीं है जो मैं चाहता हूं :( – Robin

+0

अलग-अलग सर्वर साइड टेक्नोलॉजीज अलग-अलग हैंडल करती हैं। आप ऑडियस द्वारा प्रदान किए गए JSON के बारे में उत्तर देखना चाहेंगे। – dirn

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