Помощ за AJAX/JS презареждане.

sentenello

Registered
Здравейте,
искам да попитам как да ми презареди даден див без да презарежда цялата страница (нещо като релоад само на определен див).

Ето ми го скрипта с който "презареждам" една таблица или по-точно я Hide и вкарвам друга.
Код:
<script type="text/javascript">
	 $(function() {
	 $(".glasuvaimatch").click(function(){
				var bet = $('input:radio[name=bet]:checked').val();
				var matchidto = $("#matchidto").val();
				$("<img src='/football/registraciq/5-1.gif' id='loading' alt='loading' />").appendTo("#result");
				$.ajax({
					url: "votematch.php",
					type: "POST",
					data: { 'bet': bet, 'matchidto': matchidto},
					success: function(result){
						$(".matchstats").show().html(result);
						}
				});
				return false;
			});
					});
	 </script>

Според мен тук някъде
Код:
success: function(result){
						$(".matchstats").show().html(result);
						}
трябва да добавя да презарежда див-а с клас .barstats ама така и не октрих как да го направя. Чичо Гугъл не иска да ми каже.
 
Код:
	 <script type="text/javascript"> 
    $(function() { 
    $(".glasuvaimatch").click(function(){ 
            var bet = $('input:radio[name=bet]:checked').val(); 
            var matchidto = $("#matchidto").val(); 
            $("<img src='/football/registraciq/5-1.gif' id='loading' alt='loading' />").appendTo("#result"); 
            $.ajax({ 
               url: "votematch.php", 
               type: "POST", 
               data: 'bet=' +bet + 'matchidto' + matchidto, 
               success: function(result){ 
                  $(".matchstats").show().html(result); 
                  } 
            }); 
            return false; 
         }); 
               }); 
    </script>
Така ?
 
GodFather2 каза:
Код:
	 <script type="text/javascript"> 
    $(function() { 
    $(".glasuvaimatch").click(function(){ 
            var bet = $('input:radio[name=bet]:checked').val(); 
            var matchidto = $("#matchidto").val(); 
            $("<img src='/football/registraciq/5-1.gif' id='loading' alt='loading' />").appendTo("#result"); 
            $.ajax({ 
               url: "votematch.php", 
               type: "POST", 
               data: 'bet=' +bet + 'matchidto' + matchidto, 
               success: function(result){ 
                  $(".matchstats").show().html(result); 
                  } 
            }); 
            return false; 
         }); 
               }); 
    </script>
Така ?

Никъде не виждам къде си вмъкнал код за презареждане на див с клас .barstats :o
 
sentenello каза:
GodFather2 каза:
Код:
	 <script type="text/javascript"> 
    $(function() { 
    $(".glasuvaimatch").click(function(){ 
            var bet = $('input:radio[name=bet]:checked').val(); 
            var matchidto = $("#matchidto").val(); 
            $("<img src='/football/registraciq/5-1.gif' id='loading' alt='loading' />").appendTo("#result"); 
            $.ajax({ 
               url: "votematch.php", 
               type: "POST", 
               data: 'bet=' +bet + 'matchidto' + matchidto, 
               success: function(result){ 
                  $(".matchstats").show().html(result); 
                  } 
            }); 
            return false; 
         }); 
               }); 
    </script>
Така ?

Никъде не виждам къде си вмъкнал код за презареждане на див с клас .barstats :o
Ми така изпращаш заявка до votematch.php и отговора се връща без презареждане на страницата.. не разбирам точно какво ти трябва
 
Трябва ми код който да презарежда даден див..

Код:
success: function(result){
                  $(".matchstats").show().html(result);
//тук ще сложа кода който да презарежда въпросния див
                  }
 
sentenello каза:
success: function(result){
$(".matchstats").empty().show().html(result);
//тук ще сложа кода който да презарежда въпросния див
}
Може би като го изпразниш първо или евентуално след като покажеш резултата, не мога да разбера защо след като покажеш резултата се мъчиш да го "релоаднеш" :?:
 
При натискането на $(".glasuvaimatch")

променливите ми вече имат нови стойности и въпросния див не ги присвоява докато не се рефрешне. Затова искам да се релоадне див-а за да може да вземе новите стойности.
 
sentenello каза:
При натискането на $(".glasuvaimatch")

променливите ми вече имат нови стойности и въпросния див не ги присвоява докато не се рефрешне. Затова искам да се релоадне див-а за да може да вземе новите стойности.
Е значи не ти трябвало релоадване на див :?:
Така написан кода, ти взема първия чекнат инпут, и си прави заявката (примерно), напълно вярно си взема информацията.
Трябва да ги завъртиш през един масив (хипотетично) и така да правиш заявки към сървъра, или ... (хипотетично отново) да ползваш магическото $(this).parent() или $(this).next() за да вземеш променливите :idea:
 
Явно не обяснявам като хората затова сега ще напиша по подробно какво искам да направя.

Ето ми го пхп кода..
Код:
$broi1 = mysql_result..//заявка1 
$broix = mysql_result..//заявках
$broi2 = mysql_result..//заявка2 

$proc1 = @round(($broi1/$ob6to)*100,1);
$procx = @round(($broix/$ob6to)*100,1);
$proc2 = @round(($broi2/$ob6to)*100,1);

след това одоло показвам резултатите в флаш диаграма която е в див с клас barstats.

При натискането на
$(".glasuvaimatch")
се изпълнява скрипта с който се вкарват резултати в БД и съответно вече променливите $broi1,$broix,$broi2 имат други стойности, но докато не се рефрешне страницата флаша показва старите резултатите. Именно заради това искам да вмъкна някъде в скрипта код който да презарежда див в който е флаша.
 
Такова нещо като "презареждане на информацията в даден див" - няма. Можеш да променяш HTML кода там - да го замениш изцяло или частично, да добавиш информация и т.н.

Направи така, че резултата от AJAX заявката да бъде HTML, който съдържа кода за флаша с новата информация. Тогава при success, вмъкваш този нов код в съответния див:

Код:
success: function(result){
     $(".matchstats").show().html('някакво съобщение');
     $(".barstats").html(result);
}

Ако резултата, който в момента получаваш, трябва да го покажеш в .matchstats, върни масив в JSON формат:

votematch.php
Код:
query1
query2
query3
....

$result = array(
        'message'=>'Вие гласувахте успешно!',
        'new_html'=>'<object ...(флаша е тук)..>'
);

return json_encode($result);

променяш малко и JS AJAX частта:
Код:
$.ajax({
               url: "votematch.php",
               type: "POST",
               data: { 'bet': bet, 'matchidto': matchidto},
              dataType: 'json',
               success: function(result){
                   info = jQuery.parseJSON(result);
                  $(".matchstats").show().html(info['message']);
                  $(".barstats").show().html(info['new_html']);
                  }
            });
 
Чакай малко, Replace е предложил нещо много интересно, пробвай го! Кода трябва да го сложиш в success:

Код:
success: function(result){
     $(".matchstats").show().html(result);
     $('флаша').attr({'src':$(this).attr('src')});
}

Като на мястото на "флаша" трябва да сложиш селектор до кода за флаш файла. Идеята на Replace е да зададеш нова стойност на адреса от където се зарежда флаш файла. Реално, заместването е със същата стойност, но плеара ще го издърпа и стартира отново.

Ако предположим, че кода е нещо като това:

Код:
<div class="barstats">
   <object width="550" height="400">
   <param name="movie" value="somefilename.swf">
   <embed src="somefilename.swf" width="550" height="400">
   </embed>
   </object>
</div>

js кода трябва да е:
Код:
$('.barstats embed').attr({'src':$(this).attr('src')});

Търсиш src атрибута на тага embeded, и го задаваш като уж нова стойност на същия този embeded src.
 

Back
Горе