2017-06-16 4 views
1

フォームがIDを持っている場合にのみAJAX経由でフォームを送信する、この面白いコードを作った。AJAXで手動で提出する前に、任意のフォームIDを設定することはできますか?

$(document).delegate('form', 'submit', function(event) { 

    var $form = $(this); 
    var id = $form.attr('id'); 

    //if form does not have an id, then submit it without ajax! 
    if(typeof id == 'undefined'){ 
     $form.submit(); 
    }else{ 

$.post($form.attr("action"), $form.serialize(), function(response) { 
      //response stuff 

    }); 

    event.preventDefault(); 
} 
}); 

しかし、問題は、今、私は手動でAjaxフォームは異なる機能から呼び出しを提出し、手動で値を渡す作るとき、それはAjaxをせずに定期的にフォームを送信します。フォームがHTMLに存在しない場合、フォームをTestServletに送信する前に、このajax呼び出しにIDを追加するにはどうすればよいですか?

//is it possible to add a form id before doing the ajax call below? 
     $.ajax({ 
// Maybe possible to add form id here? 
       url: 'TestServlet', 
       data: { 
        commentID: commentID, 
        comment: "lol" 
       }, 
       type: 'post', 
       success: function(data){ 
       window.location = data.url; 
       } 

      }); 
+0

あなたはもう少し説明することができ、誰もがあなたが求めているものを理解できるかどうかわかりませんか? –

+1

おそらく、 'delegate'ではなく' 'on''(http://api.jquery.com/on/)を使用しているはずです – epascarello

+0

すべてがどのように構造化されているので、同じままにするコードが必要です。私が知る必要があるのは、最後のコードに示されているajax呼び出しにフォームIDを追加する方法です。それが可能なのかどうか? –

答えて

1

コードのあなたの最初の部分は私に次のように伝えます:

フォームがのhtml IDを持っているあなたはaction属性からURLを使ってAJAXとそれを提出する属性。

フォームにhtml id属性がない場合は、というアクション属性のURLを使用する通常の送信を行います。

どのような方法で送信しても、のフォームIDはとは関係ありません。

フォームがない場合は、2番目のコード内でフォームIDを設定するのはなぜですか?

ただ、たとえば、以下のように右のURLを作成する上で動作:

$.ajax({ 
    url: 'TestServlet/{possibleID}', 
    data: { 
    commentID: commentID, 
    comment: "lol" 
    }, 
    type: 'post', 
    success: function(data){ 
    window.location = data.url; 
    }  
}); 
+0

私は参照してください。それは役に立ちます!だから私はアクション属性が未定義であるかどうかをチェックし、定義されていなければidとアクションを手動で設定するべきです。したがって、ajax呼び出しで 'url'値を置くことは無意味でしょうか? –

+0

@JonathanLaliberte停止笑。あなたは物事を台無しにしている。あなたが本当にやりたいことを教えてください、idsやアクションの属性を忘れて、ちょうどここであなたの目標を考えてください。 –

+0

は、ajaxを介して値を手動で送信します...しかし、それは私の他の邪魔なデリゲート関数を引き起こします.. –

関連する問題