Зависает страница

181
30 июля 2018, 13:20

Вкратце: страница зависает (js перестает работать, не перезагружается), когда скрипт доходит до следующей части (JS):

var i = 0;
                                                    $.post("../php/video.php", {"upcmt": str},
                                                        function(data){
                                                            alert(data);
                                                            while(!data.replace(re, "$"+i) == ''){
                                                                var cmt = $("#cmt").val();
                                                                var acmt = data.replace(re, "$"+i);
                                                                var atcmt = data.replace(re, "$"+(i+1));
                                                                var tcmt = data.replace(re, "$"+(i+2));
                                                                document.querySelector("#cmt").innerHTML = cmt + '<p id="p-comments"><a href="account.html?'+acmt+'" id="author">' + atcmt + '</a>: ' + tcmt + '</p><br>';
                                                                i= i+3;
                                                            }
                                                        }
                                                    );

PHP (работает без сбоев):

  if(isset($_POST['upcmt'])){
    $idv = $_POST['upcmt'];
    $db = mysqli_connect('127.0.0.1', 'testsite', 'testsite', 'LHVideo');
    $jsc = file_get_contents("../json/".$idv.".json");
    $jsc = json_decode($jsc, true);
    $comments = $jsc['comments'];
    $cnt = count($comments);
    $i = 1;
    $end = "";
    while($i <= $cnt){
        $cmt = $comments[$i];
        $idp = array_keys($cmt)[0];
        $tcmt = $cmt[$idp];
        $author = mysqli_fetch_array(mysqli_query($db, "SELECT login FROM accounts WHERE id = '$idp'"))['login'];
        $end = $end." $idp $author $tcmt";
        $i++;
    }
    $err = mysqli_error($db);
    echo($end);
    mysqli_close($db);
    exit();
}
Answer 1

У вас вероятно получается бесконечный цикл:

while(!data.replace(re, "$"+i) == '')

Если data.replace возвращает непустую строку, через ! вы превращаете ее в boolean false, а потом нестрого сравниваете с пустой строкой, что возвращает true. Если хотите сравнить результат с пустой строкой используйте:

while(data.replace(re, "$"+i) !== '')
READ ALSO
Custom Field Suite вывести ссылку картинки

Custom Field Suite вывести ссылку картинки

Custom Field Suite Именно этим плагином нужно вывести картинку и ссылку на картинкуПри выводе через визуальны редактор оборачивается в тег P

135
Как правильно отобразить данные из @extends в laravel?

Как правильно отобразить данные из @extends в laravel?

Такая вот проблема есть у меня файл layouts которые подключаю с помощью @extends() но вот отображаются эти файлы в обратном порядкеДанные второго...

185
Как доработать код, для вывода русских вариантов месяцев?

Как доработать код, для вывода русских вариантов месяцев?

Надо изменить так, чтоб месяц был на русском языке, как это можно сделать?

185
Сравнение времени php [дубликат]

Сравнение времени php [дубликат]

На данный вопрос уже ответили:

166