Piszę skrypt PHP, który echa numer, który reprezentuje ilość nieprzeczytanych wiadomości.

Mam następujący kod, który przetwarza PHP co 30 sekund.

setInterval(function (){
            $.ajax({
                url: "php/notifications_counter.php",
                cache: false,
                success: function(number){
                $("#notification_counter").show();
                $("#notification_counter_number").text(number);
      }
    });
        },5010);

Numer, który Echo PHP powinny być włożone do div nazywa "#notification_Counter_number". I rzeczywiście numer zostanie wstawiony. Ale z jakiegoś dziwnego powodu wraz z liczbą również komentowanie wewnątrz pliku PHP zostało odzwierciedlane? Nie mogę tego poprawić tego.

Dodatkowo chcę pokazać #Notification_Counter, gdy pojawia się echem, ale ukryty, gdy nie ma żadnego. Próbowałem więc następującego kodu tego:

...success: function(number){
                if (number > 0) {
                  $("#notification_counter").show();
                  $("#notification_counter_number").text(number);}
                else {$("#notification_counter").show();}
  }

Nie działa też :( Div zawsze jest ukryty, nawet jeśli PHP wyjściu numer więcej niż 0. Mam nadzieję, że mogą pomóc.

Aktualizacja: To jest mój plik PHP:

<!--
blabla commenting, so this gets visible as text in DIV as well. Strange...

!-->

    <?php

    include "config.php";

    //Count unread messages from database
    $Number_Query = mysqli_query ($mysqli, "SELECT * FROM notifications WHERE Notification_Read='0' "); 

    $Notification_Count = mysqli_num_rows($Number_Query);

    if ($Notification_Count > 0) {
    echo "$Notification_Count"; }

    //Close connection
    mysqli_close($mysqli);

    ?>
0
NvdB31 18 sierpień 2014, 00:03

2 odpowiedzi

Najlepsza odpowiedź

<!-- --> to komentarz HTML, który jest wyjście do przeglądarki, po prostu zmień do PHP Comments:

<?php
/*
blabla commenting, so this gets visible as text in DIV as well. Strange...

*/

include "config.php";

Podczas dokonywania zmian, to również sens do wyjścia JSON, który pozwoliłby dodać dodatkowe dane w razie potrzeby (np. Comments Times, Autor itp.):

$Notification_Count = mysqli_num_rows($Number_Query);
header('Content-Type: application/json');
echo json_encode(array('count'=>$Notification_Count));


//javascript
success: function(data){
   if (data.count > 0)...
0
Steve 17 sierpień 2014, 20:16

Więc kiedy otrzymasz stronę przez AJAX, aby zwrócić całe ciało, a nie tylko to, co widzisz w przeglądarce. Więc <!-- komentarz HTML jest zwracany w ciągu. Musisz usunąć ten wyjście całkowicie za pomocą komentarzy PHP lub obliczenia number > 0 nie powiedzie się.

Jeśli absolutnie nie możesz zmienić wyjścia PHP z jakiegokolwiek powodu, możesz usunąć odpowiedź wszystkich znaków, robiąc coś w rodzaju:

if (number.replace(/\D/g,'') > 0) {

Ale to całkiem brutto. Lepiej posprzątać plik PHP.

1
Mark Hayden 17 sierpień 2014, 20:25