Jquery + 追加 + PHP

Jquery + Append + PHP

我的代码(index.html)

<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 :)

你实际上 return JSON。你是 运行 一个通过 json_encode 的字符串,没有键,这只是给你一个字符串。然后将其 returned 到 jQuery ,它期望 JSON 因此很可能在尝试反序列化纯字符串时抛出错误。

要解决此问题,请将您的 PHP 代码更改为 return JSON:

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

并修改您的 jQuery 以从反序列化的对象中读取:

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

另请注意,使用 setInterval 发出 AJAX 请求并不是一个好主意,因为如果请求花费的时间比完成它们的间隔时间长,它们就会堆积起来。最好使用 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

这只是一个语法错误:

这段代码工作正常:

$(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);
});