CodeIgniterアプリケーションでjQueryを使用してフォームを送信したいと考えています。ただし、Controllerで呼び出された関数は、存在しないページ(Controller関数と同じ名前)にユーザーを送りたいと思っています。jQueryとCodeIgniterでページをリフレッシュせずにフォームを送信
私はこれを試してみました:
$('#contactForm').submit(function() {
});
そして、これを:
$('#contactForm').submit(function() {
dataString = $("#contactForm").serialize();
$.ajax({
type:"POST",
url:"<?php echo base_url(); ?>about/contactSubmit",
data:dataString,
success:function (data) {
alert('test');
}
});
return false; //stop the actual form post !important!
});
フォームにid "のContactForm" とシンプルなフォームです。 jQueryのsubmit関数は、コントローラ内の「contactSubmit」関数に移動するという点で機能します。この関数は、次のようになります。
public function contactSubmit()
{
$this->load->model('customer_model');
$this->customer_model->addCustomer();
}
だから、データベースに情報を追加してモデルにaddCustomer関数を呼び出します。すべてうまく動作します。しかし、存在しない "customerSubmit"ページを開こうとすると、それは私が避けたいものです。私はそれが同じページにとどまりたい、フォームにokが送信されたことをユーザーに伝えるためのjQuery関数があります。
どうすればいいですか?
EDIT:
コントローラの機能contactSubmitによって新しいページに送信されないための鍵は、私が見つけることができる対象のすべてのチュートリアルから判断し、提出するjQueryの機能でfalseを返すためにあるようだが、。私がそれを含むと、コントローラ関数はまったく呼び出されません。これは、上の最初のオプションだけが実際にController関数を呼び出していることを意味します(つまり、返り値falseを返すことはありません)。
だから私はここで間違って何をやっていますか?送信を使用してデータをデータベースに渡すことになっているのに、 "return false"が実際にコントローラの関数を呼び出すのを止めてしまったら?
EDIT 2: 答えを見つけました、Christophs投稿への私のコメントを参照してください!
customerSubmitページを開こうと? – demalexx
まあ、だれもしようとはしませんが、実際にはデータベースにデータを追加する関数を呼び出す必要があり、そうすると、その関数はコントローラ関数名に対応すると思われるページにその関数を渡します。そして、それは私が望んでいないものです... – Anders
@AndersSvensson私はPHPに精通していませんが、あなたはこの答えを見てきましたか?[ここ](http://stackoverflow.com/questions/5098945/submit-external-form-ページ外サイトなし) – sinemetu1