2012-10-09 3 views
3

저는 처음에는 javascript와 jQuery에 익숙하다고 말하고 싶습니다. 그것은 매우 어리 석고 단순한 문제입니다. 저는 이것에 대해 많은 질문이 있다는 것을 알고 있으며, 나는 그들 모두를 시도했습니다. 나는 내 문제를 해결하는 것 같지 않지만.CodeIgniter Javascript 양식 제출

입력란과 제출 버튼이 있습니다. 제출을 클릭하면 입력 된 내용을 데이터베이스에 저장하고 그대로 페이지의 내용과 동일한 페이지에 그대로 유지하고 싶습니다. 다음과 같이

내 자바 스크립트 코드는 다음과 같습니다

<script type="text/javascript"> 
     $(document).ready(function() 
     { 
      $('#submit').submit(function(e) 
      { 

       e.preventDefault(); 
       var msg = $('#uname').val(); 
       $.post("c_test/test_submit", {uname: msg}, function(r) { 
        console.log(r); 
       }); 
      }); 
     }); 
    </script> 

그리고 내 html 코드를 다음과 같이 (내가 CodeIgniter를 사용) : 사람이 내 어리 석음을 지적 할 수 있다면

$this->load->helper('form'); 
echo form_open(); 
$data =array ('name'=>'uname','id'=>'uname'); 
echo form_input($data) . '<br />'; 
$data=array('name'=>'submit','id'=>'submit','value'=>'Submit'); 
echo form_submit($data); 
echo form_close(); 

나는 매우 감사하게 될 것입니다. 감사! 아마도 이런

+0

코드에서 어떤 문제가 있었는지 추론 할 수 있었지만 문제의 원인을 정확하게 설명하면 유용합니다. 기대하지 않는 기능을 얻는다면 그 기능이 무엇인지 말하십시오. –

+0

또한 모든 사람들이 여러분이하는 HTML을 생성하기 위해 동일한 언어를 사용하지는 않습니다 (개인적으로 codeigniter를 사용하지는 않았지만, 게시 한 코드가 무엇인지 알아낼 수는 있습니다). jQuery 또는 일반 JavaScript와 관련된 질문을 할 때 실제 HTML이 생성됩니다. –

+0

그 앤서니에 대해 유감입니다. 나는 그것을 명심해야한다. – idok

답변

3

button/inputid이며 submit 같은 그런 이벤트가 대신 당신이

$('#submit').click(function(e){ ... }); 

또는 같은 click 이벤트를 사용할 수있다

$('#submit').on('click', function(e){ ... }); 

그렇지 않으면, 당신은

echo form_open('c_test/test_submit', array('id' => 'myform')); 

에 다음 행

echo form_open(); 

을 변경할 수 있습니다 대신

$('#submit').click(function(e){ ... }); 

당신은 사용할 수 있습니다

$('#myform').submit(function(e){ 
    e.preventDefault(); 
    var msg = $('#uname').val(); 
    var url=$(this).attr('action'); 
    $.post(url, {uname: msg}, function(r) { 
     console.log(r); 
    }); 
}); 

또는

$('#myform').on('submit', function(e){ 
    e.preventDefault(); 
    var msg = $('#uname').val(); 
    var url=$(this).attr('action'); 
    $.post(url, {uname: msg}, function(r) { 
     console.log(r); 
    }); 
}); 
+0

그런 설명적인 대답에 대해 감사드립니다 ... 그것은 완벽하게 정상적으로 작동했습니다. 나는 확신합니다. jQuery에 관한 한 많은 독해가 필요합니다. – idok

+0

당신은 환영합니다 :-) –

0

:

$data=array('name'=>'submit','id'=>'submit','value'=>'Submit','onsubmit'=>'return false;'); 

이 차례로 상쾌한에서 페이지를 중지합니다 게시물에서 양식을 중지합니다. 그러나 ajax를 통해 양식을 제출해야합니다.

1

id이 "제출"인 요소는 <input type="submit"> 양식의 제출 버튼입니다. 그러나 submit 이벤트는 제출 단추가 아닌 양식에 의해 시작되므로 바인딩 된 이벤트 처리기가 실행되지 않습니다.

<?php 
$this->load->helper('form'); 

echo form_open('', array('id' => 'myform')); 
.. 

과 :

$('form').submit(function(e) { 
    // handle submit event from the form 
}); 
1

당신은 이런 식으로 할 필요가 다음 submit 이벤트 처리기를 바인딩 할 때

하나는 폼에 id를 "제출", 또는 선택기를 변경 이동 :

$('#myform').submit(function(e) 
    { 
      e.preventDefault(); 
      var msg = $('#uname').val(); 
      $.post("c_test/test_submit", {uname: msg}, function(r) { 
       console.log(r); 
      }); 

      return false; 
    }); 

제출 이벤트는 항상 f orm 및 양식 단추 아닙니다.당신이 경우 submit에서

$('#submit').submit(function(e){ ... }); 

를 사용하는

+0

고마워. 그것은 도움이되었다 .. 또한 틀린 돌려 보내는의 중요성은 무엇인지 나는 모른다? – idok

+1

false를 반환하는 것은 정상적인 방법으로 브라우저를 통해 양식이 제출되지 않도록하는 것입니다. 진실을 돌려 주거나 아무것도 반환하지 않는다면 이것은 보낼 양식의 가능성을 의미합니다. false를 반환하면 자바 스크립트가이 문제를 방지 할 수 있습니다. 그것은 필수는 아니지만 그것은 나에게 여러 번 일어 났고, 나는 폼이 전송되지 않도록하기 위해 항상 추가했습니다. :) –