2015-04-21 9 views
6

İki bölümden oluşan bir PHP sayfam var (üst ve alt). Üst kısımda, Verileri Düzenleme seçeneklerinin bulunduğu bir tablo var.Ajax aynı sayfada tekrar aramaya çalıştığımda düzgün çalışmıyor

Düzenle düğmesine basıldıktan sonra, içerik sayfanın altına yüklenir ve kullanıcı verileri değiştirebilir.

İşte
  <div id="product_entry_<?php echo $id?>" class="product_entry_<?php echo $id?>"> 
       <tr> 
        <td><font size=2px><?php echo $date?></font></td> 
        <td><font size=2px><?php echo $ProductName?></font></td> 
        <td><font size=2px><?php echo $Category.'/'.$SubCategory?></font></td> 
        <td><font size=2px><?php echo $MRP.'/'.$Price?></font></td> 
        <td><button type="submit" class="btn btn-primary btn-xs" style="padding:2px 2px;font-size: 9px;line-height: 10px;" onClick="DirectPromoteSubmit(<?php echo $id?>)">Promote</button></td> 
        <td><button type="submit" class="btn btn-primary btn-xs" style="padding:2px 2px;font-size: 9px;line-height: 10px;" onClick="RePromoteSubmit(<?php echo $id?>)">Edit</button></td> 
        <td><button type="submit" class="btn btn-primary btn-xs" style="padding:2px 2px;font-size: 9px;line-height: 10px;" onClick="DelPromoteSubmit(<?php echo $id?>)">X</button></td> 
       </tr> 
      </div> 

      <!-- page where data is loaded --> 
      <div class="box box-warning" id="RePromoteReplace"> 
      ....some html content here... 
      </div> 

benim JavaScript geçerli:: İşte

benim PHP sayfasının parçasıdır İşte

  function RePromoteSubmit(id){ 
       //alert('got into Edit Promotions'); 
       var dataString = "id="+ id; 
       alert(dataString); 
       if(dataString=='') 
       { 
        alert('Some Problem Occurred, Please try Again'); 
       } 
       else 
       { 
       //alert('into post'); 
       $.ajax({ 
        type: "POST", 
        url: "SellerPanel/post_repromote.php", 
        data: dataString, 
        cache: false, 
        success: function(html){ 
         //$("#tweet").val(''); 
         //$("#preview").hide(); 
         $("#RePromoteReplace").replaceWith(html); 
         alert('Product Successfully Loaded!!! Edit(Optional) & Click Promote Button in bottom section') 
        } 
        }); 
       }return false; 
       } 

alt bölümü yükler benim PHP sayfası - post_repromote.php:

  <?php 
      include("../dbconnection.php"); 
      include("session.php"); 
      if(!isset($_SESSION)) 
      { 
       session_start(); 
      } 

      $id=$_POST['id']; 

      $query1=mysqli_query($con,"select promotiondata from sellerpromotions where id=$id"); 
      while($row=mysqli_fetch_array($query1)) 
       { 
       .....some code here..... 
       } 
      ?> 
         <div class="box box-warning"> 
          <div class="box-header"> 
          <h3 class="box-title">Fill Product Details</h3> 
          </div><!-- /.box-header --> 
          <div class="box-body"> 

         <!-- <form role="form " name="PromoteForm"> --> 
         <div> 
           <!-- text input --> 
          <table class="table"> 
           ....some data here from query.. 
          </table>   

          <div class="box-header with-border"> 
             <h3 class="box-title">Upload your Product Image</h3> 
          </div><!-- /.box-header --> 
          <div class="box-body no-padding"> 
           <div id='preview'> 
            <?php if ($uploadid){ ?> 
             &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src=<?php echo "SellerPanel/uploads/".$imagename?> id="<?php echo $uploadid?>" alt="User Image" class='preview' style='width:340px;height:200px;border-color:black'/> 
            <?php } 
            ?> 
           </div>  
           <?php 

            include ("index_photo.php"); 

           ?> 

           <!-- <span class="users-list-date">Yesterday</span> --> 

          </div><!-- /.box-body --> 
          <div class="box-footer"> 
           <button type="submit" class="btn btn-primary" onClick="PromoteSubmit()">Promote</button> 
          </div> 
        </div> 
          </div><!-- /.box-body --> 
         </div><!-- /.box --> 
      <?php } 
      ?> 

Karşılaştığım sorun:

  • Verileri ilk önce Düzenle düğmesine bastığımda yükleyebiliyorum.
  • Tekrar bastığımda, sayfayı yenilediğimde ve Düzenle düğmesini tekrar tıklamadıkça yeni verileri yükleyemiyorum.

JS'deki kimliği okumaya çalıştım ve yazdırdım, kimliğin doğru şekilde iletildiğini buldum.

Herhangi bir yardım çok takdir edilecektir.

Şimdiden teşekkürler! çözümü kullandıktan sonra

JS:

Sizin AJAX yanıtı nedeniyle bazı sunucu ayarı veya sayfa başlığına tarayıcı tarafından önbelleğe oluyor
  function RePromoteSubmit(id){ 
      //alert('got into Edit Promotions'); 
      var dataString = "id="+ id; 
      alert(dataString); 
      function getRandomInt() { 
       return Math.floor(Math.random() * Math.pow(10,6)); 
      } 
      //var url = "SellerPanel/post_repromote.php?"+getRandomInt(); 
      //alert ("url is: "+ url); 
      if(dataString=='') 
      { 
       alert('Some Problem Occurred, Please try Again'); 
      } 
      else 
      { 
      //alert('into post'); 
      $.ajax({ 
       type: "POST", 
       url: "SellerPanel/post_repromote.php?rnd="+getRandomInt(); 
       data: dataString, 
       cache: false, 
       success: function(html){ 
        //$("#tweet").val(''); 
        //$("#preview").hide(); 
        $("#RePromoteReplace").replaceWith(html); 
        alert('Product Successfully Loaded!!! Edit(Optional) & Click Promote Button in bottom section') 
       } 
       }); 
      }return false; 
      } 
+0

yazı etiketleri kullanmayın (ajax kullanırken, genellikle zaten açık konsolu olurdu) yerine alert() ait console.log() kullanmak . – epascarello

+0

Merhaba, lütfen –

+0

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/font – epascarello

cevap

4

Dene: (orijinal kodda)

success: function(html){ 
     //$("#tweet").val(''); 
     //$("#preview").hide(); 
     $("#RePromoteReplace").html(html); 
     alert('Product Successfully Loaded!!! Edit(Optional) & Click Promote Button in bottom section') 
    } 

Ben de bir ID yerine class için seçici değişen tavsiye, sen bunu yapabilirsiniz HTML'nize ek bir sınıf ekleyerek:

ve ardından seçiciyiiçinde güncelleyingeri arama:

$(".promoReplace").html(html); 

Sidenote: hata ayıklama için, onun genellikle daha kolay

+0

wow, bu sorunu çözdü. Ama neden yerine ve id öznitelikleri daha önce başarısız oldu? Bir sınıf kullanarak –

+0

, birden çok kez kullanabileceğiniz anlamına gelir, bir kimlik yalnızca bir kez çalışır. Ve 'replaceWith' muhtemelen aynı nedenle bir sorun yaşıyordu. Eğer sizin için çalışmışsa cevabı kabul edilmiş olarak işaretlemeyi unutma :-) – Und3rTow

2

. Bunu devre dışı bırakmanın en kolay yolu, her istekte bulunduğunuzda, rastgele oluşturulmuş bazı parametreleri URL'nize eklemektir.

getRandomInt işlevi, 6 basamaklı bir rasgele sayı üretecektir. Daha az/daha az basamağa sahip olmak istiyorsanız, Math.pow'a iletilen ikinci bağımsız değişkeni değiştirin. .html() yerine replaceWith() kullanmak için geri arama değişen

function getRandomInt() { 
     return Math.floor(Math.random() * Math.pow(10,6)); 
} 
//then, inside your ajax function, use: 
    url: "SellerPanel/post_repromote.php?rnd="+getRandomInt(), 
+0

Ayrıntılı bilgi edinebilir misiniz? Ajax'ta acemi olduğum için üzgünüm. Teşekkürler. –

+0

Elbette, düzenlemeyi kontrol edin ve çalışıp çalışmadığını bana bildirin. – Sidd

+0

Sadece bir istekte bulunduğunuz her seferinde url yeniden üretilmesi gerektiğini belirtmek istedim, bu yüzden kod örneği _inside_ ajax işlevinin son satırını kullanmak en iyisidir. – Sidd