2010-07-14 7 views
2

저는 몇 시간 동안 고민하고 있습니다. 분명히 뭔가를 완전히 잃어 버렸습니다.자바 스크립트 다중 차원 배열을 이해하는 데 문제가 있습니다.

ID와 함께 TinyMCE 텍스트 상자에서 일부 값을 가져오고 싶습니다. 그런 다음 ajax를 통해 서버에 게시하십시오.

jQuery를 1.4 JSON 라이브러리는

 send_data[i]["id"] = this_id; 
     send_data[i]["content"] = escape(content); 

가 작동하지 않는 것,
var send_data = []; 

    $('.contact_check').each(function (i, item) { 
     var this_id = $(item).attr('id'); 
     var msgbox = tinyMCE.get('contacts['+this_id+'][message]'); 
     var content = addslashes(msgbox.getContent()); 
     send_data[i]["id"] = this_id; 
     send_data[i]["content"] = escape(content); 
     }); 

    var encoded = JSON.stringify(send_data); 

    $.ajax({ 
     type: 'POST', 
     url: 'http://localhost/test.php', 
     data: encoded, 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     success: function(){alert('jay');} 
    }); 

첫째

을로드됩니다. 그것은 send_data [i]가 정의되지 않았다고 말합니다. 나는 또한 시도했다 :

send_data[this_id] = escape(content); 

그것도 작동하지 않는 것. JSON 문자열은 []로 반환됩니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

3

당신은 실제로 다차원 배열을 만들고 있지 않습니다. 당신은 객체들의 배열을 만들고 있습니다. 어느 쪽이든, 속성 또는 배열 요소를 send_data[i]에 설정하려면 먼저 send_data[i]이어야합니다.

send_data[i] = {}; 
send_data[i]['id'] = this_id; 
send_data[i]['content'] = escape(content); 

또는 더 나은 :

send_data[i] = { 
    id: this_id, 
    content: escape(content) 
}; 
0

당신은 각 SEND_DATA [I]을해야 할 첫 번째 대상 :

$('.contact_check').each(function (i, item) { 
    var this_id = $(item).attr('id'); 
    var msgbox = tinyMCE.get('contacts['+this_id+'][message]'); 
    var content = addslashes(msgbox.getContent()); 
    send_data[i] = {}; 
    send_data[i]["id"] = this_id; 
    send_data[i]["content"] = escape(content); 
    }); 
관련 문제