2010-12-29 1 views
1

私は送信時にajaxコールを作りたいと思います。jQuery:form and ajaxcall

<form id="editMail" action="" method="post"> 
    <input name="user_email" type="text" value="mail" maxlength="50" id="user_email" style="width:200px;"> 
    <input name="submit" type="submit" id="submit_editMail" value="Ändra"> 
</form> 


    $('#editMail').submit(function() { 
      $.ajax({ 
      type: "POST", 
      url: "misc/email/activate.php", 
      data: { action: 'edit', user_email: new_usermail }, 
      success: function(r){ 
      if(typeof(r.error) != 'undefined') { 
      if(r.error != ''){ 
      alert(r.error); 
      } 
       }else{ 
      alert('OK'); 
     } 
     }); 
    }); 

まだ何も起こっていませんが、それはajaxコールをしませんが、それはページを参照するだけです。私はonClick = "return false;"を追加しようとしました。送信ボタンには何も起こりません。

答えて

1

戻り値falseをハンドラに返します。それ以外の場合は、POST要求が開始され、デフォルトのフォーム送信が実行されます。また、このようなイベントオブジェクトのpreventDefault機能を使用することができます。

$('#editMail').submit(function(event) { 
    $.ajax({ 
     type: "POST", 
     url: "misc/email/activate.php", 
     data: { action: 'edit', user_email: new_usermail }, 
     success: function(r){ 
      if(typeof(r.error) != 'undefined') { 
       if(r.error != ''){ 
        alert(r.error); 
       } 
      }else{ 
       alert('OK'); 
      } 
     } 
    }); 
    event.preventDefault(); 
}); 

編集:

ページの読み込みが完了する前に、あなたのスクリプトが実行されていないことを確認してください。あなたはこのように、readyハンドラでスクリプトをラップする必要があります。

$(document).ready(function() { 
    $('#editMail').submit(function(event) { 
     $.ajax({ 
      type: "POST", 
      url: "misc/email/activate.php", 
      data: { action: 'edit', user_email: new_usermail }, 
      success: function(r){ 
       if(typeof(r.error) != 'undefined') { 
        if(r.error != ''){ 
         alert(r.error); 
        } 
       }else{ 
        alert('OK'); 
       } 
      } 
     }); 
     event.preventDefault(); 
    }); 
}); 
+0

、それはまだも偽リターンで試してみました、提出します。私はスクリプトが実行されていないと思う、私はajax呼び出しを参照してください..セレクタの権利ですか? – Karem

+0

セレクタが正しいです。 'submit'イベントハンドラを' form'要素にバインドします。あなたのハンドラに 'alert'を入れて、スクリプトが実行中であるかどうか確認してください。ページが読み込まれた後にJavaScriptが実行されていない可能性があります。セレクタがフォーム要素を見つけられていない可能性があります。 – Jacob

+0

ああ、@jondavidjohnは、スクリプトエラーがあったのは正しいです。私のサンプルスクリプトには修正されています。 – Jacob

1

あなたの.submitのための閉じ括弧のグループが欠落しています();

また、不要でした。あなたの「成功」機能を閉じます。

また、デフォルトの送信アクションを防ぐために必要な "return false"が追加されました。

を修正:

$('#editMail').submit(function() { 
    $.ajax({ 
     type: "POST", 
     url: "misc/email/activate.php", 
     data: { action: 'edit', user_email: new_usermail }, 
     success: function(r){ 
      if(typeof(r.error) != 'undefined') { 
       if(r.error != ''){ 
        alert(r.error); 
       } 
      }else{ 
       alert('OK'); 
      } 
     } 
    }); 
    return false; 
}); 
+0

答えをありがとう! – Karem

+0

私は問題を見つけ、自分のコードに自分の答えを組み込んだ人の正しい答えをマークしますか?弱い。 – jondavidjohn