2012-01-20 11 views
7

Próbuję przekazać tablicę do pliku json.stringify, ale zwracana wartość wraca pusta.przekazywanie tablicy do json.stringify

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

I tutaj byłoby zawartość danych:

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; 
} 

Odpowiedz

5
data = ArrayPush($group); 

ponownym przypisaniu data się tablicę, więc wszystkie swoje właściwości EXPANDO nie są usztywniane.

Wewnątrz metody ArrayPush zmień

var arr = new Array(); 

do

var obj = { }; 
+0

tak to było. Dzięki Adam – bflemi3

+0

@ bflemi3 - na pewno! –

+1

I zmień nazwę na "obj"! – Phrogz

2

arr powinny zostać uznane jako przedmiot wewnątrz ArrayPush metody, ponieważ nie używasz go jak tablicy. Również wewnątrz funkcji można po prostu użyć this.id i this.value, nie trzeba tworzyć obiektu jQuery. Wypróbuj ten

Powiązane problemy