2012-01-20 4 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.idthis.value을 사용할 수 있습니다. jQuery 개체를 만들 필요가 없습니다. 사용해보기

function ArrayPush($group) { 
    var arr = {}; 
    $group.find('input[type=text],textarea').each(function() { 
     arr[this.id] = this.value; 
    }); 
    return arr; 
} 
관련 문제