2016-10-18 3 views
-1

私は、AJAX呼び出しによってデータを動的にロードすることによってデータが取り込まれるページを持っています。古いAJAXコールからデータを返すAJAX

メインページ:

$(document).ready(function() { 
    $("#searchbar").load("searchbar.php"); 
}); 
$(document).ajaxStart(function() { 
    $("#loader").show(); 
}); 
$(document).ajaxComplete(function() { 
    $("#loader").hide(); 
}); 

searchbar.php:

$("#search").submit(function(event) { 
    event.preventDefault(); 
    var name = encodeURIComponent($("#name").val()); 
    var srv = $("input:radio[name=server]:checked").val(); 
    $.ajax 
    ({ 
     cache: false, 
     type: "GET", 
     url: "playercard.php", 
     data: "name=" + name + "&server=" + srv, 
     success: function (msg) 
     {  
       $("#contentarea").html(msg).fadeIn('slow'); 
     } 
    }); 
    return false; 
}); 

playercard.php(主な内容):

$(document).on('click', '#refreshbutton', function() { 
    $.ajax 
    ({ 
     cache: false, 
     type: "GET", 
     url: "playercard.php", 
     data: "name=<?php echo $summoner; ?>&server=<?php echo $server;  ?>", 
     success: function (msg) 
     {  
       $("#contentarea").html(msg).fadeIn('slow'); 
     } 
    }); 
    return false; 
}); 

すべてが最初の検索で正常に動作します。 (search in、submit、content areaにはplayercard.phpのデータが入力されます)playercard.phpの更新ボタンも正常に動作します。

しかし、別の検索を行うと、コンテンツ領域に新しいコンテンツが表示されます。しかし、私は、リフレッシュボタンをクリックすると、最初の検索からデータをリロードします。 (キャッシングが無効になっていて、getパラメータが正しいように見えますが)

これを引き起こす原因は何ですか?

答えて

0

これを試してみてください;)

この行は、この予期しない動作を引き起こしている:

data: "name=<?php echo $summoner; ?>&server=<?php echo $server;  ?>", 

ここでは、それぞれに常に同じですPHPを使用して値を設定しているは、JavaScript値でこれらの値を交換する必要が要請しますあなたがやっているのと同じです。searchbar.php;だから、次のコードでplayercard.phpを置き換え:

$(document).on('click', '#refreshbutton', function(event){ 
    event.preventDefault(); 
    var name = encodeURIComponent($("#name").val()); 
    var srv = $("input:radio[name=server]:checked").val(); 
    $.ajax({ 
     cache: false, 
     type: "GET", 
     url: "playercard.php", 
     data: "name=" + name + "&server=" + srv, 
     success: function(msg) 
     { 
     $("#contentarea").html(msg).fadeIn('slow'); 
     } 
    }); 
    return false; 
}); 
+0

これはうまくいった。ただし、フォームの内容を同じに保つ必要があります。言い換えれば、フォームを再送信することと事実上同じです。 –

0

私が示唆している最初のものは、あなたのデータに乱数を追加することです。 だから、データ部分は次のようになります。

data: "name=" + name + "&server=" + srv +"&random="+Math.random(), 

このように、url+dataは常に異なっています。 urlがキャッシュされ、常に同じデータに対して同じ値が返されることがあります。

一方、私はevent.preventDefault();の使用を避けようとしますが、falseを返しても十分です。

関連する問題