Автор Тема: Динамичен събмит с ajax/jquery ?  (Прочетена 3202 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
Динамичен събмит с ajax/jquery ?
« -: 03 Декември 2013, 16:38:17 »
Цитат
$ping = shell_exec("netstat -an | grep $port");
if($ping !=NULL) {

echo "<span style='color:green'>ON</span> |
<a href='' onclick='myAjax()'>Спри</a>
";

} else {
echo "<span style='color:red'>OFF</span> |
<a href='' onclick='myAjax()'>Пусни</a>
";
}

Така, имам това по-горе като код, а именно пингва един сървър и ако той е онлайн - вади, че е он, ако е офф - вади, че е офлайн.

Искам следното:
Когато е ON, до текста да има бутон "Спри", а когато е OFF, да има бутон "Пусни".

Дотук добре, но тук идва ред да опиша това което искам.

Когато цъкна бутон "Спри" искам с ajax да провери дали сървъра е пуснат (със същата функция):
$ping = shell_exec("netstat -an | grep $port");и ако
if($ping !=NULL) Да промени бутона с "Пусни" (тъй като сървъра вече е онлайн) и да промени echo "<span style='color:red'>OFF</span>на: echo "<span style='color:green'>ON</span>
Същото важи и за OFF функцията, до нея да има бутон "Пусни" и ако е онлайн да променя бутона със "Спри", а статуса да е:
echo "<span style='color:red'>ON</span>
« Последна редакция: 03 Декември 2013, 16:53:46 от lqlqlq »

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Динамичен събмит с ajax/jquery ?
« Отговор #1 -: 03 Декември 2013, 17:20:22 »
Що не го направиш така. Кодът със shell_exec-а да ти е в отделен файл, който ще го извикаш с AJAX при зареждане. Тоя файл да ти връща примерно True, ако сървъра работи, и False ако сървъра го няма. И вече според това какво е върнато, вадиш съотвения линк за пускане или спиране. Като тези линкове си водят отделно към файл където се обработва информацията и от там на същия принцип връщаш True, ако сървъра е заработил след натискането на бутона, или False ако все още го няма, и така пак вадиш съответния линк отново и отново.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
Re: Динамичен събмит с ajax/jquery ?
« Отговор #2 -: 03 Декември 2013, 17:30:09 »
Ок, мисля, че ще се оправя, но не ми е ясна самата проверка с ajax.
Може ли да ми дадеш пример ?

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Динамичен събмит с ajax/jquery ?
« Отговор #3 -: 03 Декември 2013, 18:02:20 »
Ама кажи, че ти е неясно как се работи с Ajax. Ето ти един скалъпен пример с jQuery библиотеката:
Код: Javascript
  1. $(document).ready(function() {
  2.         $.ajax({
  3.                 url             : 'check-server.php',
  4.                 type            : 'POST',
  5.                 dataType        : 'json'
  6.         }).always(function(data) {
  7.                 alert(data['status']);                         
  8.         });
  9. });

В check-server.php има само
Код: PHP
  1. echo json_encode(array('status' => true));
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
Re: Динамичен събмит с ajax/jquery ?
« Отговор #4 -: 03 Декември 2013, 18:37:58 »
Да, справих се с това да вадя true или false, но това alert явно вади някакъв бокс със съответния статус.
А на мен ми трябва да го изкарвам в някакво поле.
Примерно да имам:
<div class="showing"></div>
и там да вади резултата.
Как да стане?

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Динамичен събмит с ajax/jquery ?
« Отговор #5 -: 03 Декември 2013, 18:56:44 »
За всеки проблем си има функция - html()
Код: Javascript
  1. $('#show').html(data); // Добавя стойността на data в елемент с id show
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
Re: Динамичен събмит с ajax/jquery ?
« Отговор #6 -: 03 Декември 2013, 18:59:57 »
Нещо не ми се получи,направих го така:
$(document).ready(function() {
        $.ajax({
                url             : 'control/startup.php',
                type            : 'POST',
                dataType        : 'json'
        }).always(function(data) {
$('#show').html(data['status']);
        });
});
отдолу добавих:
<div id="show"></div>
но нищо не изкарва.

пробвах и така:
$(document).ready(function() {
        $.ajax({
                url             : 'control/startup.php',
                type            : 'POST',
                dataType        : 'json'
        }).always(function(data) {
$('#show').html(data.status);
        });
});
« Последна редакция: 03 Декември 2013, 19:29:25 от lqlqlq »

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Динамичен събмит с ajax/jquery ?
« Отговор #7 -: 03 Декември 2013, 19:57:01 »
Е стига де, давам ти работещ пример и ти го написваш обратно и казваш че не работи. И data->status да го напишеш все си е тая. За тия Ajax заявки ще трябва да ползваш някакъв инструмент за debug, FireBug за Firefox, а Хром директно си имаш Dev Tools. Като цяло JavaScript си е пипкав и без подходящите инструменти няма да стане. Виж дали нещо връща файла control/startup.php, и в коректния формат на данни ли е?
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

lqlqlq

  • Full Member
  • ***
  • Благодарности
  • -Казани: 30
  • -Получени: 1
  • Публикации: 234
Re: Динамичен събмит с ajax/jquery ?
« Отговор #8 -: 03 Декември 2013, 20:22:03 »
Така, ето къде беше проблема, за да работи така:
  $('#show').html(data.status);в 'status' трябва да имам html тагове, ето как проверявах status-a:
$port = (int)$_GET['port'];
$ping = shell_exec("netstat -an | grep $port");
if($ping !=NULL) {
$status =  "<a>on</a>";
} else {
$status = "<a>off</a>";
}
echo json_encode(array('status' => $status));

ето и моя ajax:
<script>
$(document).ready(function() {
        $.ajax({
                url             : 'control/startup.php?port=$port',
                type            : 'POST',
                dataType        : 'json'
        }).always(function(data) {
  $('#show').html(data.status);     
        });
});
</script>

Ако искате обаче да викате само 'текст', то нещата трябва да изглеждат така:

<?php
$port 
= (int)$_GET['port']; 
$ping shell_exec("netstat -an | grep $port");
if(
$ping !=NULL) {
$status =  "on";
} else {
$status "off";
}
echo 
json_encode(array('status' => $status));
?>

<script>
$(document).ready(function() {
        $.ajax({
                url             : 'control/startup.php?port=$port',
                type            : 'POST',
                dataType        : 'json'
        }).always(function(data) {
  $('#show').text(data.status);     
        });
});
</script>
(вместо .html, ползваме .text)