2010-12-10 3 views
53

같은 $ 아약스 (직렬화() + 추가 데이터)를 통해 데이터를 추가하는 방법 $ ('# myForm을'). (직렬화) + 추가 데이터내가 사용 후 추가 데이터를 추가 할이

$.ajax({ 
    type: 'POST', 
    url: $('#myForm').attr('action'), 
    data: $('#myForm').serialize(), // I WANT TO ADD EXTRA DATA + SERIALIZE DATA 
    success: function(data){ 
     alert(data); 
     $('.tampil_vr').text(data); 
    } 
}); 

답변

122

어떤 종류의 데이터입니까?

data: $('#myForm').serialize() + "&moredata=" + morevalue 

"data"매개 변수는 URL 인코딩 된 문자열 일뿐입니다. 원하는대로 추가 할 수 있습니다. API here을 참조하십시오.

+0

덕분에 ... 난 $ 참조 .ajax 매뉴얼 serialize() (초보자 아약스) –

+3

더 많은 단일 데이터 요소를 nees 추가하려면 'serialize() +'& '+ $ param (myParametersObject)'를 사용할 수 있습니다. 여기서 myParametersObject는 다음과 같습니다. '{ 'param': 'val', 'param2': 'val2', ...}와 같은 간단한 객체 – epeleg

6

개인적으로, 직렬화 된 데이터를 해킹하는 대신 양식에 요소를 추가합니다 (예 :

moredata = 'your custom data here'; 

// do what you like with the input 
$input = $('<input type="text" name="moredata"/>').val(morevalue); 

// append to the form 
$('#myForm').append($input); 

// then.. 
data: $('#myForm').serialize() 

그런 식으로, 당신은 약 ? 또는 &

+1

당신은 양식을 연재하고 있습니다. 그래서 왜 그런 경우가 있을까요? 또는 & ??? 빈 폼을 직렬화하지 않는 한 항상 & a ...이 될 것입니다.

'다시 포인트가 없습니다 – zgr024

+0

왜 처음부터 처리해야합니까? 단순히 요소를 폼에 추가 한 다음 직렬화 된 형식으로 문자열을 연결하는 것보다 더 깔끔한 방식으로 직렬화합니다. 추가 된 각 필드에 대해 & 또는 =을 누락하여 오류가 발생할 수 있습니다. – steadweb

+3

그렇다면'.serializeArray()'를 사용하고 데이터를 배열에 추가하는 것이 좋습니다. 어느 쪽이든 똑같이 게시 할 것입니다. http://stackoverflow.com/questions/14102732/can-i-add-data-to-an-already-serialized-array – zgr024

4

당신은 이런 식으로 작업을 수행 할 수 있습니다 걱정할 필요가 없습니다 : 그것은 매우 잘 작동 jthompson

postData[postData.length] = { name: "variable_name", value: variable_value }; 
관련 문제