javascript — Jquery + Append + Stack Overflow

Мой код (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. Вы видите какую-то ошибку? если да, пожалуйста, ответьте, спасибо 🙂

1

Решение

Вы на самом деле не возвращаете JSON. Ты бежишь через json_encode без ключа, который просто возвращает вам строку. Затем он возвращается в jQuery, который ожидает JSON, поэтому, скорее всего, выдает ошибку при попытке десериализации простой строки.

Чтобы это исправить, измените код PHP так, чтобы он возвращал 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);

Также обратите внимание, что выполнение запросов AJAX с использованием setInterval Это не очень хорошая идея, так как если запросы будут дольше, чем интервал, они будут складываться. Лучше использовать 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
5

Другие решения

Это просто синтаксическая ошибка:

Этот код работает нормально:

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector