2016-05-23 28 views
0

を私が最初の答えを見てきたが、何も、それは...jQueryの負荷は()ファイルから更新された結果を得ることはありません

HTMLファイルであるので、ここで、この周りに明確な頭を持っていない(?!):

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<form id="new-task"> 
    <input id="task-field" type="text" name="task"> 
    <button type="submit">change value</button> 
</form> 
<div id="output"></div> 

JSファイル:

$(document).ready(function(){ 

    $("#new-task").submit(function(event){ 

     event.preventDefault(); 

     var inputValue = $("#task-field").val(); 


     $.ajax({ 

      url: "ajaxRequest.php", 
      data: "task="+inputValue 


     }); 

    }); 

    $("#output").load("ajaxRequest.php"); 

}); 

PHPファイル:

私は何かが書かれ、フォームを通じて提出されるたびに、 "出力" divで$ _GET値をPHPから出力したいだけです。代わりに、最初にページが読み込まれたときに「get not set」を出力し、値を送信してもそのように維持されます。ブラウザのネットワークタブにリクエストが送信され、「タスク」get変数が作成された(スクリーンショット - https://gyazo.com/2c45024df4338b0481da4494ba89e49e)というメッセージが出力されていることが示されます。私は何が欠けていますか?私は何か間違ったことを理解していたに違いない...

+1

ajaxリクエストを完了する前にajaxRequest.phpをロードすることができますか? jsはC#やPHPのようなものではないことを覚えておいてください...そこに座ってAjaxの応答を待つことはありません。これが正しく機能するには、コールバックまたは約束を使用する必要があります。 – JonH

+0

load()がajaxリクエストの後に置かれていると、リクエスト前のPHPロードが完了するのはなぜですか? document.ready()の内部で何が順番に実行されませんか?アクションが発生した場合(submitを押すなど)、再実行されませんか? – Irina

+1

load()関数もajaxリクエストです。 $ .ajax関数はサブミットロジック内にありますが、load()はsubmit関数ブロックの外にあるため、ページがロードされるときに一度だけロードされます。それ以降のすべての送信はajax要求を行いますが、応答は何も行われません。別の例としては、提出するロジックを$( "#output")と置き換えることができます。load( "ajaxRequest.php?task =" + $( "#task-field")。負荷が応答を処理するためです。 – bhietpas

答えて

1

コードは、送信機能の外にあるので、ページが準備完了のときに一度だけ読み込まれるようです。他のajax呼び出しは送信されますが、コードが最初のページの読み込み時間以外にデータを再読み込みしないように見えます。

てみてください、あなたが微調整する必要がありますので、テストされていない

$.ajax({ 
    url: "ajaxRequest.php", 
    data: "task="+inputValue 
}).done(function(returnData){ 
    $("#output").html(returnData); 
}); 

のようにデータをロードするための.done()コールバックを追加します。

+0

私は代わりに 'success:function()'を使用しましたが、Dは現時点ではわかりやすいようです。私はちょうどAJAXの仕組みを理解し始めました。 – Irina

関連する問題