2010-11-19 3 views
1

これはおそらく後方に聞こえるでしょう。私は偽を返してフォームを提出する必要がありますが、依然としてフォームを提出します。返品は偽ですが、依然としてフォームを提出します - PHP、Javascript、AJAX、CodeIgniter

私はajax(jquery load関数)を介してページにプルインされています。サブミット時に、ページをリダイレクトするのではなく、同じdivにグラフィックとテキストを表示したいと思います。

これは私の送信ボタン(CodeIgniterの):

<input type="submit" onclick="form_success(); return false;" class="button" value="Save" name="submit"> 

と成功メッセージロードjavascript関数:

function form_success_client() { // form success 
    $('.contentarea').load("/mm/index.php/site/form_success_client/"); 
} 

をそのすべての

<?php $attributes = array('class' => 'button', 'onclick' => 'form_success_client(); return false;', 'name' => 'submit'); echo form_submit($attributes, 'Save'); ?> 

とhtmlで

それはフォームを提出しません。私はこれを行う適切な方法は、フォーム提出をjqueryに渡すことですが、私はそれを行う方法がわかりません。可能であれば(私はより良い解決策を並べ替える時が来るまで)迅速な修正を行うことができましたが、すべての提案は高く評価されました。

ありがとうございます!

ANSWER:URLおよびデータにOBJを包む)

function form_success_client(obj) { 
    $.ajax({ 
     type: 'POST', 
     url: $(obj).attr('action'), 
     data: $(obj).serialize(), 
     success: function(msg){ 
     $('.contentarea').load("/mm/index.php/site/form_success_client/"); 
     } 
    }); 
    return false; 
} 

注$(:

これは、私のためにマギーの答えのちょうどわずかな編集を働いたものです。

+0

form_success_client(this); return false;

ような
<form onsubmit="form_success_client(this); return false;"> 

をバインドする必要がありますか?これまでに何が起こったとしても、それはいつも呼び出されます。それは...ですか? – zod

答えて

2

を提出することができますjqueryの.post、に.getを使用するか、SUCCESSまたは返されたデータに基づいて

をアヤックスすることができますJS onclick-eventをこのようなフォーム(ボタンではなく)にバインドします。 'onclick' => 'form_success_client(this); return false;'

function form_success_client(obj) { 
    $.ajax({ 
     type: "POST", 
     url: obj.attr("action"), 
     data: obj.serialize(), 
     success: function(msg){ 
     $('.contentarea').load("/mm/index.php/site/form_success_client/"); 
     } 
    }); 
} 

テストされていない

+0

こんにちは@マギー、遅延のために申し訳ありません。このレスポンスは良く見えますが、obj.attrとobj.serializeにエラーが発生します。 'obj.attrはファンクバグではありません'。 – Robimp

+0

* faceslap *もちろんifs jQuery '$(obj)'を見つけた場合 – teemitzitrone

1

考えられる解決策にあなたの関数を変更します。私はEDIT

<input type="submit" onclick="form_success_client(this); return false;" class="button" value="Save" name="submit"> 

function form_success_client(i) { 
    formData = $(i).parents('form').serialize(); 
    $.post("/mm/index.php/site/form_success_client/", formData, function(loaded) { $('.contentarea').append(loaded) }, 'html'); 
} 

あなたのコードにこだわっています:マギーが言ったようにはい、あなたはないリターンはfalseが行うことは何かボタン

+0

あなたが.parents( 'form')を実行したときにあなたがイベントをフォームにアタッチしているフォーム上でそれをやって、何も戻ってくることはありません。それはちょうど私が間違っているかもしれないので私の頭のjsのエンジンを通してそれを実行している。ちょうどあなたの編集に少し追加する必要が本当にコメント。 :) – Chris