2015-12-23 91 views
1

我的代碼(的index.html)jQuery的+追加+ PHP

<script> 
    $(document).ready(function() { 
     var interval = setInterval(function() { 
      $.get("load_txt.php", { 'var1': 4, 'var2' : 52}, 
       function(data){ $('#msg').append(data); }, "json"); 
      }); 
     }, 1000); 
    }); 
</script> 
<p id='msg'></p> 

我的代碼(load_txt.php)

<?php 
$var1 = $_GET['var1']; 
$var2 = $_GET['var2']; 

    $data = "var1= " . $var1 . " " . "var2= " . $var2; 

    echo json_encode($data); 
?> 

它不工作,沒有什麼是顯示#msg。你能看到一些錯誤嗎?如果是,請回答,thx :)

+0

錯誤在控制檯? –

+0

無。控制檯是乾淨的 – Meldiron

+0

你應該檢查什麼返回你的PHP腳本,我想一個錯誤。順便說一句,每秒發送一個請求,無需等待任何前一個完成是一個不行, –

回答

5

你實際上並沒有返回JSON。你通過json_encode運行一個沒有鍵的字符串,它只是給你一個字符串。然後返回給期待JSON的jQuery,所以最有可能拋出一個嘗試反序列化一個普通字符串的錯誤。

爲了解決這個問題,改變你的PHP代碼實際上將返回JSON:

var interval = setInterval(function() { 
    $.get("load_txt.php", { 
     'var1': 4, 
     'var2': 52 
    }, function(data) { 
     $('#msg').append(data.var1 + ' ' + data.var2); 
    }, "json"); 
}, 1000); 

還要注意的是使用setInterval使得AJAX請求:

echo json_encode(array('var1' => $var1, 'var2' => $var2)); 

並修改您的jQuery從deserialised對象讀取這不是一個好主意,就好像請求花費的時間比完成時間要長,它們會堆積起來。這是更好地使用setTimeout,使新的請求時,前一個已完成:

function makeRequest() { 
    $.get("load_txt.php", { 
     'var1': 4, 
     'var2': 52 
    }, function(data) { 
     $('#msg').append(data.var1 + ' ' + data.var2); 
     setTimeout(makeRequest, 1000); // on success 
    }, "json"); 
} 
makeRequest(); // on load 
+0

我絕對不知道爲什麼,但它仍然無法正常工作。屏幕截圖:http://imgur.com/a/IcqV0 – Meldiron

+0

好的,你有沒有在控制檯中的錯誤? –

+0

@Meldiron清除您的瀏覽器緩存,當然還有 –

-1

這只是一個語法錯誤:

此代碼工作正常:

$(document).ready(function() { 
    var interval = setInterval(function() { 
     $.get("load_txt.php", { 'var1': 4, 'var2' : 52}, 
      function(data){ $('#msg').append(data); }, "json"); 
    }, 1000); 
}); 

;請注意,此(**)件需要刪除:

$(document).ready(function() { 
    var interval = setInterval(function() { 
     $.get("load_txt.php", { 'var1': 4, 'var2' : 52}, 
      function(data){ $('#msg').append(data); }, "json"); 
     **});** 
    }, 1000); 
});