2009-10-09 2 views
0

내가 한 선택 상자가 있습니다모든 선택 값을 PHP로 통과

<select name="sub_selected" class="bmarks" id="sub_selected" 
style="width:400px" size="5"> 
      <option value="1">first value</option> 
      <option value="2">second value</option> 
      <option value="4">other vale</option> 
            </select> 

내가 PHP는 모든 값을 전달하고자합니다.

나는 다음과 같은 코드를 작성했지만 작동하지 않습니다

$('#sub_selected').each(function(i, selected){ 
     foo[i] = $(selected).val(); 

       var title  = $('#prop_tile').attr('value'); 
       $.ajax({ 
       type: "POST", 
       url: "add_process.php", 
       data: "title="+ title +"& stages="+ foo, 
       success: function(html){ 
       if (html==1){ 
       $('div.saving').hide(); 
       $('div.success').fadeIn(); 
       }else { 
       $('div.saving').hide(); 
       $('div.nosuccess').fadeIn(); 
       } 

       } 
       }); 

내가 바람직 형식으로, MySQL의에 저장하는 PHP로 선택 상자의 모든 값을 제출하려는 (1,2,4)을 .

감사합니다.

+0

악마의 옹호자를 만나는 이유는 무엇입니까? 일반적으로 제출되는 하나의 값이 아니라 모든 값이 선택된 경우 스크립트에서 수행 할 작업은 무엇입니까? –

답변

0

정말로 모든 것을 원한다면 그런 식으로하지 마십시오. PHP에서 선택 옵션을 표시하는 것과 같은 방식으로 가져옵니다.

4

jquery에 대해 많이 알지 못하지만 jquery가 <select> 태그가 포함 된 양식을 제출한다고 가정 할 때 순수하게 HTML 수준에서 문제를 해결할 수 있습니다. <select>의 작동 방식은 브라우저가 선택된 게시물에서만 데이터를 제출한다는 것입니다. 옵션이 강조 표시되어 있지 않으면 서버에 POST으로 전송되지 않습니다.

다음과 같이 해결할 수 있습니다. 먼저 <select>multiple="multiple" 속성이 있어야 하나 이상의 요소를 선택할 수 있습니다. 두 번째로 <option> 태그 각각에 selected="selected" 속성을 추가하십시오. 마지막으로 사용자가 양식 제출 전에 옵션을 모두 선택 해제하지 않으려면 <select> 태그에 disabled="disabled" 속성을 추가하십시오.

업데이트 : name="sub_selected"name="sub_selected[]"으로 변경하여 PHP 측에서 값을 배열로받을 수도 있습니다. jquery reference를 sub_selected에서 sub_selected[]으로 조정해야합니다.

+2

+1 : 필자가 기억 하듯이 select 요소는 PHP로 배열로 들어옵니다. – Powerlord

+0

@R. Bemrose : 사실 select 태그의 name 속성이 []로 끝나면 select 요소는 PHP로 배열로 들어갑니다. – Asaph

0

당신이 정말로 JQuery와 함께하고 싶어이, 여기에 간단한/올바른 그것을 할 방법 : 수신 측에

// I'm not sure what the '#prop_tile' element is so I didn't 
// include it for this example 
var all_vals = new Array; 
$('#sub_selected option').each(function() { 
    all_vals.push($(this).val()); 
}); 
$.post('add_process.php', { stages:all_vals }, function(html) { 
    $('div.saving').hide(); 
    $('div.success').fadeIn(); 
},'html'); 

, 당신은 할 수 있습니다 :

<?php 
if(isset($_POST['all_vals'])) { 
    $all_vals = $_POST['all_vals']; 
    // $all_vals is now an array = [1,2,4] 
} 
?> 

: 피부 깊숙이 왜 그렇게하기를 바랄지에 대한 자세한 내용을 공개하면 좋을 것 같습니다. 바보 같은 일로 보입니다.