2016-09-17 5 views
0

jquery/ajax newbieからの基本的な質問。フォームは、ajax、php、およびjqueryを使用してアクションまたは動作しません。

私は、jqueryとajaxを介してサーバー側のphpファイルにデータを渡すための2つの入力フィールドを持つ単純なフォームを持っています。処理後、「要求が処理されました」などの素敵な返信を送り返す必要があります。

私はウェブとこのフォーラムを検索しましたが、すべての投稿/ウェブページ/チュートリアルで同じように記述されているわけではありません。今、私は豊富な情報の中で少し失われています。

最初の質問:すべてのチュートリアルでは、フォームは.htmlファイル(index.htmlなど)の内部にあります。私の場合、フォームは.phpファイルにあります。フォームがどのように扱われるかに影響しますか?フォームはHTML構文で書かれているので、.htmlか.phpファイルかどうかは関係ありません。

2番目の質問:いくつかのチュートリアルで

、フォームアクションは、データが送信されるPHPファイルにリンクします。メソッドは通常 "POST"です。 jqueryファイルでは、$ .ajax urlも同じPHPファイルを指しています。

これは正しい方法ですか?

私がそれを設定すると、送信ボタンをクリックすると、ブラウザは常にform-actionのphpファイルに送られ、私が書いたjqueryファイルは実行されません。 そして私はこれがなぜ起こるのかを知りません。

誰かが正しい方向に向けることを願っています。

答えて

0

お持ちの場合:

<?php 
<form action="distant.php" id="myForm"> 
    <input type="text" name="form-element" /> 
    <input type="submit" value="Submit form" /> 
</form> 
<div id="message"></div> 
?> 

をあなたはjQueryの中でこれを行うことができます:

$('form').on('submit',function(e){ 
    e.preventDefault(); // do not try to access distant.php by reloading the page 
    $.ajax({ 
     type  : "POST", 
     url  : $(this).attr('action'), // access distant.php by ajax 
     data  : $(this).serialize(), // get values from the form. In this case, only one element (with name="form-element") 
     success : function(data) { 
      // response from distant.php - could be "request was processed" if you want 
      $("#message").html(data); // display the response in the html 
     } 
    }); 
}); 

しかし、私は、HTMLやPHPを混合することによってポイントが表示されません。

+0

私が前に言ったように、豊富な情報のために、私はすべてを混ぜていました。 – Dimitri

0

私は、私がこれまで知っているもの、それは.PHP、.htmlのか.jsonのために働く必要があるファイル拡張子のための

  1. にお答えします。あなたが宣言したdataTypeのように、ajaxは戻り値を取得します(html またはjson)。

    1. POSTまたはGETを使用できるタイプは、必要なものによって異なります。しかし、あなたの問題(ajaxは実行できません)のためには、必ず のinspect要素を開いてajaxの送信データをチェックしなければなりません。(ブラウザでは をクリックしてください。次に、[ネットワーク]タブ をクリックします。エラーがあればそこに見ることができます。 (常に あなたのデータコードのコードをdie($ query)でデバッグするなど)。 Goodluck!
0

ファイルタイプがphp、html、aspxなどであるかどうかは関係ありません。ブラウザに送信される出力は、すべてクライアントによって同じように扱われます。

あなたの質問は、バックエンドにデータを投稿する2つの異なる方法を参照しています。あなたはその2つをミックスしてマッチングしています。

シンプル:

<form action="/somepage.php" method="post"></form> 

は、クライアントからサーバにデータをポストするための最も標準的な方法です。それはおそらくあなたが学ぶための良い出発点です。 AJAXも同じことを行いますが、ロードされたページのURLを変更することなく、現在のページをロードして非同期的にサーバーにデータを送信することはありません。後者のシナリオでは、通常、DOMを操作するか、データが送信されたことを示すためにユーザーにフィードバックを表示します。

私が前に言ったように、あなたはバックエンドと作業ページに標準的な形式の投稿から始めるべきだと思います。これは、クライアントとサーバー側のやりとりを学ぶためにはるかに優れた点です。

+0

こんにちは、私は '投稿'方法でデータを渡す方法を知っています。しかし、私はURLをリフレッシュせずにこれをやりたかった。しかし、何が起きているのか理解できないのは、あなたの例のようなフォームアクションを定義すると、これはJqueryスクリプトを定義しても常に実行されます。私が "submit"ボタンを押すと、ブラウザはjqueryを最初に実行することなく/somepage.phpにリダイレクトされます。 – Dimitri

+0

これは正常な動作です。 「送信」ボタンは、そのイベントが捕捉されて防止されない限り、常にフォームを送信します。代わりに通常のボタンを使用して見てください '' –

関連する問題