2010-05-24 6 views
3

jquery .serializeArray() 함수를 사용하고 있는데 서버로 보내면 모든 것이 작동합니다. 그러나 클라이언트 측에서 직렬화 된 몇 가지 사항을 업데이트해야합니다.jquery. serializeArray() 값을 키 이름으로 가져올 수 있습니까?

텍스트 상자에서 다른 선택기를 사용하는 대신 직렬화 된 배열에서 해당 선택기를 가져 오려고합니다.

나는 이런 식으로 뭔가가있는 경우이

Product=Test&Qty=50 

그래서 말을 할 방법 없습니다 확신합니다. 나는 이런 것을 할 수있다.

var sendFormData = form.serializeArray(); 
var val = sendFormData["Product"].value; 

그러나 이것은 효과가없는 것처럼 보인다. 나는 순서는 값이 모두 잘못 될 수 변경하는 경우 그 의미하기 때문에 정말 인덱스를 싶지 않아이

var sendFormData = form.serializeArray(); 
var val = sendFormData[0].value; 

뭔가를 할 때 나는 단지 그것을 작동시킬 수 있습니다. 당신이 keyname과 비슷한 방법으로 그것을 할 수 있다면, 그것은 문제가되지 않을 것입니다.

답변

5

당신은 개체를 통해 루프는 다음과 같이 $.param()를 사용하여 필요한 경우 (.serialize()this internally을 수행)하는 파라미터의 캐릭터 라인으로 변환 한 후, 당신이 원하는 것을 설정할 수 있습니다

var arr = $("form").serializeArray(); 
$.each(arr, function(i, fd) { 
    if(fd.name === "Product") fd.value = "New Value"; 
});  
var sendFormData = $.param(arr); //turn it into Product=Test&Qty=50 string format 
//sendFormData == "Product=New+Value&Qty=50" 

You can see a demo here

당신이 만약 문자열로 직렬화 할 필요가 없습니다. 다음과 같이 조금 단순화하십시오.

var sendFormData = $("form").serializeArray(); 
$.each(sendFormData , function(i, fd) { 
    if(fd.name === "Product") fd.value = "New Value"; 
}); 
//sendFormData == "Product=New+Value&Qty=50" 
+0

n은 그 때 무엇이 ​​더 빠릅니까? 각 상자의 선택기를 다시 수행하거나 각 루프를 통해 이동하십시오. 루프를 통과 할 것으로 추측하고 있습니까? – chobo2

+0

@ chobo2 - 상자의 ID가 매우 빠르지 만 필드의 * lot *을 제출하지 않으면 성능 차이가 어느 정도 무시 될 수 있습니다. 우리는 아주 작은 * 어느 쪽이든 시간을 보냈습니다. –

+0

그럼 당신은 무엇을 권하고 싶습니까? 오랫동안 잘못하면 가장 좋은 방법은 무엇일까요? – chobo2

관련 문제