2016-03-29 10 views
0

Şu anda içeriğini bir metin dosyasından alan bir HTML dokümanı var. Yapabildiğim şey kullanıcının dosyayı textarea içinde düzenlemesine izin vermek ve bir düğmeye bastıklarında, tüm sayfayı yeniden yüklemeye gerek kalmadan değişiklikler dosyaya aktarılır.Dosyada Değişiklikleri Kaydetmek zorunda kalmadan Page

Bunun tek başına bir javascript ile yapılabileceğini anlıyorum çünkü bir istemci tarafı dili, ancak bunun bir şekilde AJAX ile yapıldığını düşünüyordum? AJAX ile çok fazla tecrübem yok, bu yüzden işe yaramayabilir.

Yapmam gereken şey için basitlik uğruna web bağlantılarından uzak kalmak istiyorum.

<?php 
    $myfile = fopen($file, 'a+'); 

    echo "<textarea id='demo'>"; 
    // go through each line in the file, print its contents. 
    while(!feof($myfile)) { 
      echo fgets($myfile); 
    } 
      echo "</textarea>"; 
?> 
+1

Elbette, metin alanının değerini alan ve sunucuya bir ajax isteği gönderen "kaydet" düğmesinin tıklama olayına bir işleyici eklersiniz. Orada, yükü alan ve kaydeden bir "kaydet" senaryosuna (belki php veya herhangi bir dilde) sahipsiniz. – arkascha

+0

@arkascha Tamam, bakacağım ve denemeliyim. Teşekkürler – l00kitsjake

cevap

0

Tüm sayfayı yenilemeden, jquery ajax kullanarak textarea'yı güncelleyebilirsiniz. Index.php'de (buradaki örneğimde) save changes'u tıklattığınızda, textarea değerini id="demo" ile alırız ve update.php göndeririz. Update.php'de, mevcut tüm metni temizlemek ve textarea adresinden aldığımız yeni içeriği fwrite() kullanarak kullanıyoruz ve index.php'da yaptığımız gibi yeni metni görüntülüyoruz.

Yani bu index.php geçerli:

<!DOCTYPE HTML> 
    <html> 
     <head> 
      <title>TextArea Lesson</title> 
      <style> 
       div{ 
        margin:0 auto 0; 
        width:400px; 
        height:300px; 
       } 
       #demo{ 
        margin-left:5px; 
        width:390px; 
        height:200px;    
       } 
      </style>  
     </head> 
     <body> 
      <div> 
      <form method="POST"> 
       <fieldset> 
        <legend>Ajax Update Text Area</legend> 
     <?php 
      $myfile = fopen('test.txt', 'r'); 
       echo "<textarea id='demo'>"; 
      // go through each line in the file, print its contents. 
      while(!feof($myfile)) { 
       echo fgets($myfile); 
      } 
       echo "</textarea><br>"; 
     ?> 
        <input type="submit" id="save" value="Save changes" /> 
       </fieldset> 
      </form> 
      </div> 
     </body> 
    </html> 
    <script src="https://code.jquery.com/jquery-1.12.2.min.js" 
        integrity="sha256-lZFHibXzMHo3GGeehn1hudTAP3Sc0uKXBXAzHX1sjtk=" 
        crossorigin="anonymous"></script> 
    <script> 
    //when you click save changes, we get its id="save" 
    //and prevent default submission  
    $(document).on("click", "#save", function(e){ 
      e.preventDefault(); 
      //get the textarea data bu its id="demo" 
      var textdata = $('#demo').val(); 
      mydata= 'testdata='+textdata; 
      $.ajax({ 
       type:'POST', 
       data:mydata, 
       url:'update.php', 
       success:function(data) {     
        if(data){ 
         alert('Saved!'); 
         $("#demo").html(data);//load data from update.php 
        }else{ 
         alert('Update failed'); 
        } 
        } 
      }); 
     }); 
    </script> 

Update.php:

<?php 
$data_to_write = $_POST['testdata']; 
$file_path = 'test.txt'; 
$file_handle = fopen($file_path, 'w'); 
fwrite($file_handle, $data_to_write); 
fclose($file_handle); 
$myfile = fopen('test.txt', 'r'); 
while(!feof($myfile)) { 
      echo fgets($myfile); 
    } 
fclose($myfile); 
?> 

Ve test.txt:

büyük Hızlı kahverengi siyah tilki tembel köpeğin üstünden atlar.

Umarım bu size yardımcı olabilir. Not: Bu sadece bir çalışma kodu ve sadece öğrenme amaçlıdır. Bu yüzden güvenlik kontrolü ve veri doğrulama sağlanmaz.

+0

Eğer update.php universal yapmak (hardcode 'test.txt' değil) ve index.php dosyasında bir değişkenim varsa, dosya yolunu içeren $ file (dosya). Bu değişkeni ajax üzerinden de geçirebilir miyim? – l00kitsjake

+1

Elbette, bu mümkün. 'var filepath = 'getfilepathfromform';' ve 'testdata = '+ textdata +' & filepath = '+ dosya yolu;' Ve update.php, '$ file_path = $ _ POST [' dosya yolu '];' –

0

Eh, bunu yapmanın kolay yollarından bir çift var:

Aşağıda benim PHP textarea kodudur. Gizli bir iç ağa sahip olabilirsiniz. kişi başvuru formunu tıkladığında, alanınızın değerini gizli çerçevenizdeki bir forma gönderen ve JavaScript kullanarak formu gönderen bir işlevi çağırırsınız.

  • , XMLHttpRequest() öğesini kullanabilirsiniz; iletilen verileri alan bir php sayfası oluşturun. XMLHttpRequest() kullanarak sayfayı arayın; verileri formdan göndermek. 2 2 daha zariftir.

  • İlgili konular