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);
});
我的代码(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);
});