2017-09-14 9 views
0

아약스를 통해 양식 데이터를 보내려고하고 serialize를 사용하여 그렇게합니다. 난뿐만 아니라 serializeArray 시도하고 동일한 결과를 얻고있다. 나는 누군가가 내가 모든 것을 시도한 것처럼 느껴지기 때문에 내가 문제 해결을 도울 수 있기를 바랬다. 아래에있는 내 코드 조각을 참조하시기 바랍니다 :Serialize가 빈 배열을 펌핑합니다.

function quizSubmit($quiz){ 
 
     console.log($quiz); 
 
     var form='#'+$quiz; 
 

 
     var data1=$(form).serializeArray(); 
 
     console.log(data1); 
 
     $.ajax({ 
 
     type : 'POST', 
 
     url : 'quizsubmit.php?quiz='+$quiz, 
 
     data : data1, 
 
     beforeSend : function() { 
 
      $('#checklist-info-container').html('processing'); 
 
       console.log("sending"); 
 
     }, 
 
     error : function() { 
 
      $('#checklist-info-container').html('failure'); 
 
       console.log("fail"); 
 
     }, 
 
     // success callback 
 
     success : function (response) { 
 
      $('#checklist-info-container').html(response); 
 
       console.log("success"); 
 
     }, 
 
     timeout : 3000, 
 
     }) 
 
    }
<table class="checklist-table"> 
 
       <form id="<?php echo $id; ?>" name="q1" method="post"> 
 
       <tr> 
 
       <td class="checklist-info-title"><?php echo($title); ?></td> 
 
       </tr> 
 
       <tr> 
 
       <td class="checklist-info-description"><div> 
 
        <div class="form-group required quiz-question"> 
 
        <label class="control-label" for="question1">What did you learn?</label> 
 
        <div class="radio"> 
 
         <label><input type="radio" name="question1" value="answer1">Nothing</label> 
 
        </div> 
 
        <div class="radio"> 
 
         <label><input type="radio" name="question1" value="answer2">Something</label> 
 
        </div> 
 
        </div> 
 
        <div class="form-group required quiz-question"> 
 
        <label class="control-label" for="question2">Question 2</label> 
 
        <div class="radio"> 
 
         <label><input type="radio" name="question2" value="answer1">Answer 1</label> 
 
        </div> 
 
        <div class="radio"> 
 
         <label><input type="radio" name="question2" value="answer2">Answer 2</label> 
 
        </div> 
 
        </div> 
 
        <div class="form-group required quiz-question"> 
 
        <label class="control-label" for="question3">Question 3</label> 
 
        <div class="radio"> 
 
         <label><input type="radio" name="question3" value="answer1">Answer 1</label> 
 
        </div> 
 
        <div class="radio"> 
 
         <label><input type="radio" name="question3" value="answer2">Answer 2</label> 
 
        </div> 
 
        </div> 
 
        <div class="form-group required quiz-question"> 
 
        <label class="control-label" for="question4">Question 4</label> 
 
        <div class="radio"> 
 
         <label><input type="radio" name="question4" value="answer1">Answer 1</label> 
 
        </div> 
 
        <div class="radio"> 
 
         <label><input type="radio" name="question4" value="answer2">Answer 2</label> 
 
        </div> 
 
        </div> 
 
       </div></td> 
 
       </tr> 
 
       <tr> 
 
       <td class="quiz-button"><button class="btn btn-success" onclick="quizSubmit(<?php echo $id; ?>);">Submit</button></td> 
 
       </tr> 
 
      </form> 
 
      </table>

두 번째 콘솔 로그 인쇄 아웃 거기에 아무것도 길이 0의 배열을 인쇄 유지합니다. 그러나 이유는 확실하지 않습니다.

+0

'$ quiz'는 문자열이나 jQuery 객체가 해당 함수에 전달 될 때 사용됩니까? – ficuscr

+0

첫 번째 콘솔 로그 인쇄 란 무엇입니까? console.log ($ quiz); –

+0

내 첫 번째 콘솔 로그는 "q1"인 양식의 ID를 출력합니다 (실제로 양식 요소 전체를 표시합니다 :

Chaosdestined

답변

0

자바 스크립트 코드를 변경해야합니다. $로 시작하는 변수가 종종 jQuery를 관련 변수 orvalues ​​위해 예약되어 있으므로 $ 퀴즈,

function quizSubmit(quiz){ 
    console.log(quiz); 
    var form='#'+quiz; 

    var data1=$(form).serializeArray(); 
    console.log(data1); 
    ....... 
    ....... 
} 

jQuery를 특별한 행동의 번호와 객체에 대한 글로벌 $ 변수를 설정 퀴즈 바꾸기.

당신은 html 코드로 jquery 객체로 변수를 전달하지 않습니다. 자바 스크립트 변수로 전달하는 것 같습니다.

+0

답장을 보내 주셔서 감사합니다 방금 시도했는데 여전히 빈 배열을 제공하고 있습니다. 나는 완전히 손실되었습니다. 다른 제안이 있습니까? – Chaosdestined