Проблема с получением значения php с запросом Ajax

У меня проблемы с PHP и Ajax: Я хочу сделать простую страницу, которая показывает ваш пинг в Google, поэтому я попробовал это:

setInterval(function(){
    var ping = <?php
        $ip =   "8.8.8.8";
        exec("ping -n 1 $ip", $output, $status);
        if (isset($output)){echo $output[2][37] . $output[2][38];}
        $output = array();
    ?>;
    document.getElementById("ping").innerHTML = ping;
},100)

Это не сработало (я думаю, что php не актуализируется), поэтому я попытался вызвать php через ajax (я очень новичок в ajax): HTML:

<p id = "ping"></p>
<script>
setInterval(function(){
    jQuery.ajax({
        url: 'ping.php',
        success: function(data){
            document.getElementById("ping").innerHTML = data;
        },
    });
},100)
</script>

PHP:

<?php
function ping(){
    $ip =   "8.8.8.8";
    exec("ping -n 1 $ip", $output, $status);
    if (isset($output)){echo $output[2][37] . $output[2][38];}
}
?>

Ничего не появляется. Что я делаю неправильно? (Извините, если я допустил ошибки в английском) Спасибо

Просто чтобы помочь вам понять, почему первый пример не сработал: PHP выполняет серверную часть (для генерации html) до того, как клиент получит этот html. JS происходит на клиенте после того, как он получает сгенерированный html из php. Итак, как только php выведет этот результат в этот ping js var ... js будет использовать это значение только на каждом интервале js. Итак, ваш метод ajax был правильным способом получить «свежие» данные с php для использования.

IncredibleHat 17.07.2018 20:11

Боковое примечание: вы МОЖЕТЕ захотеть заменить 100 на 1000 (или даже больше). Потому что 1000 = интервал в 1 секунду. Другой будет хлопать по серверу 10 раз в секунду, и каждый вызов ajax будет карабкаться друг над другом в зависимости от того, кто быстрее вернется с результатами (поскольку здесь нет цепочек обещаний).

IncredibleHat 17.07.2018 20:14

Благодарим Вас за разъяснения! Я сохранил интервал 100 мс, я просто сделал это, чтобы решить проблему: if (ping! = Undefined) {...}

Zorro Le Dozo 17.07.2018 20:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
27
1

Ответы 1

Думаю, я только что разобрался сам: я просто удалил функцию () ping в .PHP:

<?php

    $ip =   "8.8.8.8";
    exec("ping -n 1 $ip", $output, $status);
    if (isset($output)){echo $output[2][37] . $output[2][38];}

?>

Работает отлично

вы также могли «вызвать» функцию.

Funk Forty Niner 17.07.2018 19:57

Другие вопросы по теме