2012-01-20 13 views
7

पर एक सरणी पास करने के लिए मैं json.stringify पर एक सरणी पास करने का प्रयास कर रहा हूं लेकिन लौटाया गया मूल्य खाली वापस आ रहा है।json.stringify

data[from] = "[email protected]" 
data[to] = "[email protected]" 
data[message] = "testmessage" 

jQuery:

function SubmitUserInformation($group) { 
    var data = {}; 
    data = ArrayPush($group); 
    $.ajax({ 
     type: "POST", 
     url: "http://www.mlaglobal.com/components/handlers/FormRequestHandler.aspx/EmailFormRequestHandler", 
     data: JSON.stringify({ json: data }), 
     dataType: 'json', 
     contentType: "application/json; charset=utf-8", 
     cache: false, 
     success: function (msg) { 
      if (msg) { 
       $('emailForm-content').hide(); 
       $('emailForm-thankyou').show(); 
      } 
     }, 
     error: function (msg) { 
      form.data("validator").invalidate(msg); 
     } 
    }); 
} 

function ArrayPush($group) { 
    var arr = new Array(); 
    $group.find('input[type=text],textarea').each(function() { 
     arr[$(this).attr('id')] = $(this).val(); 
    }); 
    return arr; 
} 

उत्तर

5
data = ArrayPush($group); 

फिर से बताए है, एक श्रृंखला होना चाहिए data इसलिए सभी अपने expando गुण

JSON.stringify({ json: data }) // returns `{"json":[]}` 

और यहाँ डेटा की सामग्री होगा स्ट्रिंग नहीं किया जा रहा है।

अपने ArrayPush विधि के अंदर, बदल

var arr = new Array(); 

var obj = { }; 
+0

हाँ यह कोशिश करें। धन्यवाद एडम – bflemi3

+0

@ bflemi3 - निश्चित बात! –

+1

और इसे 'obj' नाम दें! – Phrogz

2

arr क्योंकि आप इसे एक सरणी की तरह उपयोग नहीं कर रहे ArrayPush विधि के अंदर एक वस्तु के रूप में घोषित किया जाना चाहिए। फ़ंक्शन के अंदर आप केवल this.id और this.value का उपयोग कर सकते हैं, आपको jQuery ऑब्जेक्ट बनाने की आवश्यकता नहीं है। इस

function ArrayPush($group) { 
    var arr = {}; 
    $group.find('input[type=text],textarea').each(function() { 
     arr[this.id] = this.value; 
    }); 
    return arr; 
} 
संबंधित मुद्दे