2011-07-05 9 views
1

양식이 있습니다. 텍스트 영역과 선택 상자로 구성됩니다. 서버 측에 제출하고 싶습니다. 다음은 프런트 엔드 코드입니다. 백엔드 코드에는 "print_r ($ _POST);"문장이 하나만 있습니다. 사용자가 채우고 선택한 데이터를 인쇄합니다. 문제는 사용자가 입력 한 데이터를 볼 수 있지만 선택 상자에서 데이터를 볼 수 없다는 것입니다. 예를 들어, 내가보고 싶어 :jquery submit 선택 상자

Array ([name] => hello [email] => ***@hotmail.com [list] => NYC) 

을하지만 그것은 단지 보여줍니다 말했다

Array ([name] => hello [email] => ***@hotmail.com) 

, 그것은 선택 상자에 데이터를 표시 할 수 없습니다.

<form name="contact", action="ajax.php" method="POST"> 
    <fieldset> 
     <label for="name" id="name_label">Name</label> 
     <input type="text" name="name" id="name" size="30" value="" class="text-input" /> 

     <label for="email" id="email_label">Email</label> 
     <input type="text" name="email" id="email" size="30" value="" class="text-input" /> 

     <select id="list" > 
     <option></option> 
     <option value="NYC">NYC</option> 
     <option value="USA">USA</option> 
     </select> 

    <input type="submit" id="submit" value="Send" /> 
    </fieldset> 
    </form> 

<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script> 
<script> 
$(function() { 
    $('#submit').click(function() { 
     // validate and process form here 
    $('.error').hide(); 
     var name = $("input#name").val(); 
     var email = $("input#email").val(); 
     var list = $("select#list").val(); 

     var dataString = 'name='+ name + '&email=' + email + '&list=' + list; 
     alert(dataString); 
     $.ajax({ 
     type: "POST", 
     data: dataString, 
     url : "ajax.php", 
    }); 
    }); 
    }); 

</script> 
+0

코드가 미리보기에 나타나지 않으면 코드 서식을 사용하십시오. – alex

+0

선택 태그 – Joe

+0

의 이름을 설정해야합니다. @JoeTuskan : OP가 XHR을 통해 데이터를 보내고 있습니다. – alex

답변

1

코드에 오류가없는 것으로 나타나지만 매개 변수 목록을 직접 만드는 것은 불필요합니다.

해당 양식을 $('form[name="contact"]').serialize()으로 간단하게 serialize 할 수 있습니다.

그러나 XHR 외에이 양식을 제출하는 경우 select 요소에 name 속성을 부여해야합니다.

XHR 정상 제출을 통해 제출하려는 경우 XHR 성공시 submit()을 부탁합니다. 그렇지 않으면 요청이 완료되지 않을 수 있습니다.

+0

location이라는 name 속성을 추가하려고했습니다. var list = $ ("select # list"). attr ("location"); alert (dataString)을 사용하여 올바른 데이터를 가져올 수 있는지 여부를 보여줍니다. 그것은 "list = undefined"를 보여주는 것이 이상합니다. – chnet

+0

기본 이벤트 방지에 대해 자세히 설명해 주시겠습니까? – chnet

+0

@chnet : ['event.preventDefault()'] (http://api.jquery.com/event.preventDefault/). – alex