2011-01-05 5 views
1

ごくわずかです。CodeIgniterのAJAX問い合わせフォーム

私はCIとJQuery AJAXを使用しています。

以下のコードでは、デフォルトでクエリ文字列としてURLに追加されるdataStringをアセンブルします。

私は、AJAXの "タイプ"をPOSTに変更しました。私の質問は、 - 私はCIアプリケーションでdataStringにアクセスするにはどうすればいいですか?

それは私がまだ

$name=$this->input->post('name')

を使用する必要が思わ私に、dataString冗長設定になり、どの?

-

私が探して試してみたが、本当に具体的な何かを見つけることができません。

CIs検証ライブラリとAJAXを使用することは可能でしょうか?

if($this->form_validation->run() == FALSE) 
{ 
    // what can i return so that my CI app shows errors? 
} 

通常、連絡先フォームをリロードするか、ユーザーをリダイレクトします。理想的な世界では、エラーメッセージをユーザーに表示したいと思います。

jqueryの:私は十分に明らかにされてきた

$(document).ready(function($){ 
     $("#submit_btn").click(function(){ 
      var name = $("input#name").val(); 
      var company = $("input#company").val(); 
      var email = $("input#email").val(); 
      var phone = $("input#phone").val(); 
      var message = $("textarea#message").val(); 
      var dataString = 'name=' + name + '&message=' + message + '&return_email=' + email + '&return_phone=' + 
      phone + '&company=' + company; 
      var response = $.ajax({ 
       type: "POST", 
       url: "newsite/contact_ajax/", 
       data: dataString 
      }).responseText; 

      //$('#contact').hide(); 
      //$('#contact').html('<h5>Form submitted! Thank you!</h5><h4>We will be in touch with you soon.</h4>'); 
      //$('#contact').fadeIn('slow'); 
      return false; 
     }); 
    }); 

希望 - 誰もが素晴らしいことだCIコンタクトフォームのまともな例を持っている場合。インターネット上に混在しているものがありますが、すべてのボックスに当てはまるものはありません。

おかげ

+0

'データ:$(your_form_id).serialize()、 '? – ifaour

答えて

4

私がコメントで書いたようにjQueryのは、あなたのためにそれを行うことができるので、あなたはdataStringを設定する必要はありません。

$(document).ready(function($){ 
    $("#submit_btn").click(function(){ 
     var response = $.ajax({ 
      type: "POST", 
      url: "newsite/contact_ajax/", 
      data: $(your_form_id).serialize() 
     }).responseText; 

     //$('#contact').hide(); 
     //$('#contact').html('<h5>Form submitted! Thank you!</h5><h4>We will be in touch with you soon.</h4>'); 
     //$('#contact').fadeIn('slow'); 
     return false; 
    }); 
}); 
+0

'dataString'は厳密にGETの権利ですか?私は考えています。だから、私は標準的なCIの方法でフォーム変数からデータにアクセスするだけですか? 'data:'は一時的なPOST配列になりますか?ありがとう〜 – Ross

+2

いいえ、[$ .ajax](http://api.jquery.com/jQuery.ajax/)を読んでください。$ .ajaxを使用すると混乱しないでください。フォームはデータ所有者のようになり、JSが無効な場合はフォールバックになります)...ブラウザは、あなたが提供するものを 'url'に提出するので、' data'は 'POST'と' GET'リクエストの両方に使用され、 serialize()があなたの時間を節約し、 'dataString'を準備するだけです! – ifaour

3

あなたはjQueryの$.post()機能を使用する場合は、明示的にあなたのコントローラで、あなたの質問で提案されている方法は、それらにアクセスその後、ポスト変数に名前を付けることができます。

$.post("<?php echo site_url("newsite/contact_ajax/";?>", 
     {my_name:name,my_company:company,my_email:email,my_phone:phone,my_message:message}, 
     function(){ 
       //callback function 
     },  
     html 
    ); 
お使いのコントローラで

$this->input->post('my_name'); 
$this->input->post('my_company'); 
//etc 
関連する問題