2012-01-06 1 views
1

JQUERY :PHP에서 직렬화 JQuery와 데이터 읽기 (복수 체크 박스)

$(document).ready(function(){ 
    $('form').submit(function(){ 
     var content = $(this).serialize(); 
     //alert(content); 
     $.ajax({ 
      type: 'POST', 
      dataType: 'json', 
      url: 'http://localhost/test/generate', 
      timeout: 15000, 
      data:{ content: content }, 
      success: function(data){ 
       $('.box').html(data).fadeIn(1000); 
      }, 
      error: function(){ 
       $('.box').html('error').fadeIn(1000); 
      } 
     }); 
     return false; 
    }); 
}); 

HTML :

<form> 
<input type="checkbox" value="first" name="opts[]"> 
<input type="checkbox" value="second" name="opts[]"> 
<input type="checkbox" value="third" name="opts[]"> 
<input type="submit"> 
</form> 

내가 어떻게 처리 할 (또는 읽기) 여러 PHP에서 체크 박스의 값을 확인? 나는 일련 번호가있는 데이터를 얻으려고했지만 행운은 누우려고 $_POST['content']을 시도했다.

+1

당신이 JSON으로 데이터를 전송해야 할 이유가 있습니까? 양식의 기본 게시물은 데이터를'$ _POST [ 'opts']'로 사용할 수있게합니다 (배열을 반환합니다). json으로 유지해야하는 경우'var_dump ($ _ POST)'를 사용해보십시오. – Grexis

+0

그는 데이터를 JSON으로 보내지 않습니다. 'dataType' 매개 변수는 요청이 아닌 서버 응답 내용 유형을 나타냅니다. –

+0

@Darin 아, jQuery에 대해 많이 다루지는 않았지만 (폼을 표시합니까? : D) 양식과 데이터 : {content : content} 행의 직렬화를 언급했습니다. – Grexis

답변

5

은 교체 :

data:{ content: content } // <!-- you are prefixing with content which is wrong 

로 : 당신의 PHP 스크립트에서 지금

data: content 

정상적으로 배열을 반환해야 $_POST['opts'] 사용할 수 있습니다.

+0

당신은 저를 잡았습니다! 감사. – Michelle

+0

감사합니다 매번 잘못된 방법을 사용했습니다 ... – softsdev

1

echo $_POST['opts'][0]. "<br />"; 
echo $_POST['opts'][1]. "<br />"; 
echo $_POST['opts'][2]. "<br />"; 

당신은 서버 배열을 게시 시도하고는 '의 opts'포스트 변수에 사용할 수 있습니다. 기억하십시오 : 확인란을 선택하지 않으면 게시되지 않습니다.

-2

코드에서 오류가 있습니다 :

  1. URL이 있어야한다 url: 'http://localhost/test/generate.php' 확장자 이름
+0

프레임 워크를 사용하고 있습니다. – Michelle

0

선택된 대답은 아직 여기 나를 위해 작동하지만하지 않았다가 무슨 짓을했는지 있습니다 :

var checkedBoxesArr = new Array(); 
$("input[name='checkedBoxes']:checked").each(function() { 
    checkedBoxesArr.push($(this).val()); 
}); 
var checkedBoxesStr = checkedBoxesArr.toString(); 
var dataString = $("#" + formID).serialize() + 
        '&checkedBoxesStr=' + checkedBoxesStr; 


[위의 코드는 양식 데이터를 직렬화하기 전에, 당신의 자바 스크립트에 간다]먼저 체크 박스를 반복해서 배열에 넣습니다.
다음으로 배열을 문자열로 변환하십시오.
마지막으로 직렬화 된 양식 데이터에 수동으로 추가하십시오. 이렇게하면 나머지 직렬화 된 데이터와 함께 PHP에서 문자열을 참조 할 수 있습니다.

이 답변
이 게시물에서 부분적으로 온 : Send multiple checkbox data to PHP via jQuery ajax()