2012-01-13 17 views
5

मुझे एक JSON ऑब्जेक्ट मिलता है, जिसे मैं var एम्बेड करने के लिए स्ट्रिंग करता हूं।JSON.stringify का सुरक्षित रूप से उपयोग कैसे करें

console.log(send_me_along) 

{"provider_url":"https://www.site.com/","description":"Stuff, you’ll need to blah blah","title":"Person detail view & engagement","url":"https://www.site.com/","version":"1.0","provider_name":"site","type":"link"} 

फिर ajax beforeSend में मैं साथ इस पारित करने के लिए प्रयास करें:: console.log की तरह लग रहा

settings.data += '&embed_data=' + send_me_along; 

यह वह जगह है जहां यह टूट जाता है। मुझे नहीं पता क्यों। क्या आप? कुछ send_me_along ब्रेक और JSON ऑब्जेक्ट इसे रेल तक कभी नहीं बनाता है।

Started POST "/st" for 127.0.0.1 at 2012-01-12 17:20:25 -0800 
Parameters: {"utf8"=>"✓", "authenticity_token"=>"MzDImoksi56IZ1Fa4ldM8jaFyBy61xaWt4bf3z0/3UQ=", "comment"=>{"content"=>"https://www.site.com", "mentions"=>"https://www.site.com"}, "commit"=>"", "embed_data"=>"{\"provider_url\":\"https://www.site.com/\",\"description\":\"Stuff, you’ll need to blah blah.\",\"title\":\"Person detail view ", "engagement\",\"url\":\"https://www.site.com/\",\"version\":\"1.0\",\"provider_name\":\"site\",\"type\":\"link\"}"=>nil, "id"=>"ae86c5b7a6"} 

ऐसा लगता है कि शीर्षक में & पोस्ट पर खिलवाड़ कर रहा है। क्या स्ट्रिंग किए गए डेटा को सबकुछ तोड़ने की अनुमति देने के लिए सेटिंग्स.data का उपयोग करते समय jQuery को करने की आवश्यकता है?

धन्यवाद

+0

send_me_along एक ऑब्जेक्ट है, यह सुनिश्चित नहीं है कि आप 'settings.data' में क्या जोड़ना चाहते हैं, क्या आप एक क्वेरी स्ट्रिंग चाहते हैं? –

उत्तर

5

आप एक URL पैरामीटर आप इसे सांकेतिक शब्दों में बदलना करने के लिए इतना है कि विशेष वर्ण है कि एक यूआरएल (ऐम्परसेंड की तरह) में अर्थ है चीजों को तोड़ने नहीं होगा की जरूरत के रूप में JSON के एक स्ट्रिंग पारित करने के लिए प्रयास कर रहे हैं। तो कुछ इस तरह: MDN पर encodeURIComponent() पर

settings.data += '&embed_data=' + encodeURIComponent(send_me_along) 

अधिक जानकारी।

0

क्यों न सिर्फ एक वस्तु के रूप डेटा सेट जब आप ajax कहते हैं?

$.ajax(
    //... 
    data: { 
    stuff: "something"... 
    } 
); 

एम्परसैंड के साथ jquery सौदा करने दें।

+0

अच्छा सवाल है, मैं रेल यूजेएस का उपयोग कर रहा हूं, जो मेरे लिए यह सब कुछ करता है। मैं क्या कर सकता हूं पहले डेटाबैक में डेटा.सेटिंग को संशोधित करता है जो मैं करने की कोशिश कर रहा हूं ... विचार? –

+0

सिर्फ 'एस्केप' कॉल करने और स्ट्रिंग को पास करने में सक्षम होना चाहिए। –

1

डेटा को एन्कोड करने के लिए encodeURIComponent का उपयोग करें।

settings.data += '&embed_data=' + encodeURIComponent(send_me_along); 
संबंधित मुद्दे