2015-09-09 3 views
3

Так что я просто пытаюсь создать счетчик, который обновляет значение в моей базе данных каждый раз, когда я нажимаю кнопку, а затем я хотел бы отображать это значение на странице. Мой код для обновления значения работает, но мой код для отображения значения не хочет работать.Ajax Json запрос не работает

Вот мой JS код для обновления счетчика:

<script> 
setInterval("checkCount()",500); 
function checkCount() 
{ 
    jQuery.ajax({ 
     url: 'http://ntc.aiesecfrance.org/server_count_get/', 
     dataType: 'json', 
     success: function(data) { 
      alert("data.count");  
     } 
    }); 
}; 
</script> 

и вот мой PHP код, чтобы получить значение из базы данных.

$connection = mysqli_connect("localhost", "test", "", "test"); 
    if (mysqli_connect_errno()) { 
     echo 'connection failed'; 
    } 
// Fetching the value 
$query = "SELECT count FROM counterval WHERE id=1"; 
$count = mysqli_query($connection,$query); 
$value = mysqli_fetch_array($count); 

header('Content-type: application/json'); 
echo json_encode($value); 
?> 

но с этим я не получил предупреждения. Он просто не появляется. Вот пример того, что retunrned по PHP:

{"0":"8","count":"8"}

Заранее спасибо за вашу помощь.

+0

Сделайте некоторые основные отладки. Посмотрите на инструменты разработчика вашего браузера. Посмотрите на консоль. Он показывает какие-либо ошибки? Посмотрите вкладку «Сеть». Показывает ли это запрос? К правильному URL? Получаете ли вы ответ, который ожидаете? – Quentin

ответ

2

Вы должны удалить цитаты.

Это будет:

alert(data.count)

EDIT

Попробуйте это.

jQuery.get('http://ntc.aiesecfrance.org/server_count_get/', function(r) { 
    var json = $.parseJSON(r); 
    alert(json.count); 
}); 

Надеюсь, вы включили jQuery. Во всяком случае, попробуйте также поставить функцию внутри

$(function() { 
    function checkCount() { ... } 
}); 

EDIT 2 (ВАЖНО)

я увидел, что выход есть HTML-страницы, а не только в формате JSON. Попробуй это.

$.get('http://ntc.aiesecfrance.org/server_count_get/', function(r) { 
     var $html = $(r); 
     var json_value = $html.find('#post-291 .entry-content').text(); 
     var json = $.parseJSON(json_value); 
     alert(json.count); 
    }); 

В любом случае вы не может делать кросс-происхождения вызовов.

+0

Да, жаль, что это было просто испытание. Но он все еще не работает –

+0

Я отредактировал ответ. Проверь это! PS: Это метод POST или GET? – Grork

+0

«В любом случае вы не можете выполнять вызовы с перекрестным происхождением». - Это неправда.У нас есть CORS, JSONP и Proxies, которые делают возможным перекрестное происхождение. – Quentin

-1

Ваш звонок setInterval не работает. Вы хотите setInterval(checkCount, 500), а не setInterval("checkCount()", 500). Последний передает строку, и даже без кавычек она будет вызывать функцию и передавать ее возвращаемое значение; setInterval выполняет функцию.

+0

Он не работает –

+0

'setInterval' может принимать либо функцию, либо строку, подлежащую оценке. Передача функции - лучшая практика, но она не решит проблему здесь. «даже без кавычек» - удаление цитат без удаления() вызовет эту проблему, но никто не предлагает этого. – Quentin

0

Я finnaly удается сделать это, в самом деле этот JQuery код был хорош:

<script> 
setInterval("checkCount()",500); 
function checkCount() 
{ 
    jQuery.ajax({ 
     url: 'http://ntc.aiesecfrance.org/get_count/', 
     dataType: 'json', 
     success: function(data) { 
      alert(data.count);  
     } 
    }); 
}; 
</script> 

Единственный Probleme был плагин в WordPress я использую, который подножка РНР и отображение его в главную страницу. Но тогда ответ был намного больше, чем json (html, содержащий json), и поэтому он не сработал. Но теперь он полностью работает, поэтому еще раз спасибо за вашу помощь :)

Смежные вопросы