2015-11-20 41 views
1

我有一個使用jQuery AJAX從服務器上的txt文件讀取的問題。基本上,我有3個文件,所有這些文件都在同一個目錄中的服務器上(不會晚點)。一個HTML文件包含一個按鈕,當你點擊它時啓動一個AJAX請求,然後將一個字符串(默認字符串)發送到一個創建txt文件的PHP文件。而且我有另一個HTML文件,它在1500毫秒內具有一個簡單的setInterval,並且它獲得了txt文件的值,如果該值是==='default string',它會使另一個AJAX調用將該文本文件重寫爲空。問題是我總是在setInterval中獲得「默認字符串」,並且只有在瀏覽器中打開txt文件時,HTML2文件中的ajax纔會返回空字符串。這是正常的行爲,還是我失去了一些東西jQuery AJAX調用從txt文件中獲取錯誤的值

HTML文件中插入的默認字符串' https://jsfiddle.net/fc6n07uz/1/

$('button').on('click', function() { 
    console.log('you clicked'); 

    $.ajax({ 
     url: 'write_to_file.php', 
     type: 'POST', 
     data: {insertValue: 'default string'}, 
    }) 
    .done(function() { 
     console.log("success"); 
    }) 
    .fail(function() { 
     console.log("error"); 
    }) 
    .always(function() { 
     console.log("complete"); 
    }); 

}); 

HTML文件,上面寫着,如果字符串爲「默認字符串」 emptyp的txt文件 https://jsfiddle.net/ewtjy66b/1/

setInterval(function(){ 

    $.ajax({ 
     url: 'textfile.txt', 
     type: 'GET', 
     dataType: 'text' 
    }) 
    .done(function(data) { 
     if(data === 'default string') { 

      console.log("I got the default string"); 

      $.ajax({ 
       url: 'write_to_file.php', 
       type: 'POST', 
       data: {insertValue: ''}, 
      }); 

     } 
    }) 
    .fail(function() { 
     console.log("error"); 
    }); 


}, 1500); 
插入文本爲txt文件

PHP文件(必須記住,txt文件不會被PHP創建的,我創建在本地) https://jsfiddle.net/c91jumuw/

<?php 

$insertValue = $_POST['insertValue']; 
$myfile = fopen("textfile.txt", "w+") or die("error!"); 
fwrite($myfile, $insertValue); 
fclose($myfile); 

?> 

那麼,爲什麼我總是從HTML2獲得控制檯日誌(執行console.log(「我得到了默認字符串」);),即使我重置txt文件的價值。我知道我重置,因爲我refreshthe在瀏覽器txt文件,它是空的,在那個時候我停止獲得的console.log

回答

0

將按鈕點擊函數內部setInterval函數,

這樣的:

 $(document).ready(function(){ 
       $('button').on('click', function() { 
        console.log('you clicked'); 

        $.ajax({ 
         url: 'write_to_file.php', 
         type: 'POST', 
         data: {insertValue: 'default string'}, 
        }) 
        .done(function() { 
         console.log("success"); 
        }) 
        .fail(function() { 
         console.log("error"); 
        }) 
        .always(function() { 
         console.log("complete"); 
        }); 


        setInterval(function(){ 
         $.ajax({ 
          url: 'textfile.txt', 
          type: 'GET', 
          dataType: 'text' 
         }) 
         .done(function(data) { 
          if(data === 'default string') { 

           console.log("I got the default string"); 

           $.ajax({ 
            url: 'write_to_file.php', 
            type: 'POST', 
            data: {insertValue: ''}, 
           }); 

          } 
         }) 
         .fail(function() { 
          console.log("error"); 
         }); 
        }, 1500); 


       }); 
      }); 

與上面的代碼替換整個jQuery代碼,

我測試和工作正常,

希望這會幫助你:)

+0

工作就像一個魅力,謝謝你! –