2014-12-30 1 views
1

Я использую малиновый pi для импульсного реле (в представленной ниже форме) к другому оборудованию, которое, если успешно пульсирует, переключит реле вкл/выкл. Переключенное реле возвращается к pi в качестве входа, который контролируется на странице status.php внутри загрузочного div. Если я загружаю следующую страницу, она правильно отображает status.php, но после нажатия кнопки отправки формы она не перезагружает страницу status.php. Я пробовал все, о чем я могу думать, пожалуйста, помогите!PHP/Javascript/Python не перезагружает div

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>Alarm Panel</title> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" /> 
    <script src="http://code.jquery.com/jquery-2.1.3.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 
    <script type="text/javascript">// <![CDATA[ 
    $(document).ready(function() { 
        $.ajaxSetup({ cache: false }); 
    setInterval(function() { 
    $('#loading').load('/status.php'); 
    }, 2000); 
    }); 
// ]]> 
</script> 
    <?php 
    if (isset($_POST['PULSE'])) { 
      shell_exec('python /usr/lib/cgi-bin/pulse.py'); 
     } 
    ?> 
</head> 
<body> 
    <div id="currentstatus" data-role="collapsible" data-theme="b" data-content-theme="b" data-collapsed="false"> 
    <h1>Current status</h1> 
    <div id="loading" align="center"> 
     <H3>Loading Status...</H3> 
    </div> 
    </div> 
    <div data-role="collapsible" data-theme="b" data-content-theme="b"> 
    <h4>Change Status</h4> 
    <form method="post"> 
     <input type="submit" name="PULSE" value="PULSE" /> 
    </form> 
    </div> 
    </body> 
    </html> 

status.php <?php $status = shell_exec('python /usr/lib/cgi-bin/status.py'); ?> <h3><? echo $status; ?></h3> <br /> <img src="/img/<? print $status; ?>.jpg" height="250"; width="250";>

+0

вы пробовали настройки формы в 'действия = «?»? Похоже, что форма не отправляется в родительский документ ... – Todd

+0

lol. Я думаю, что на самом деле это может быть неважно. позвольте мне попробовать для реального решения ... – Todd

+0

Что находится в status.php? – OIS

ответ

0

вы пробовали манипулируя представить поведение? который может это исправить.

$(document).on('click', '[name="pulse"]', function(e) { 
    e.preventDefault(); 
    $('#loading').load('/status.php'); 
}); 

Вы также можете попытаться изменить вашу функцию тайм-аута ... Это немного сложнее, потому что нагрузка является асинхронной функцией.

var loadStatusTimeout; 
function loadStatus() { 
    $('#loading').load('/status.php', function() { 
     loadStatusTimeout = setTimeout(loadStatus, 2000); 
    }); 
} 
loadStatusTimeout = setTimeout(loadStatus, 2000); 

также, вы случайно добавив точку с запятой в свой IMG элемент:

изменение:

<img src="/img/<? print $status; ?>.jpg" height="250"; width="250";> 

к:

<img src="/img/<? print $status; ?>.jpg" height="250" width="250"> 
+0

Я попытался добавить это в те же теги сценария, что и document.ready, но он все еще не работал правильно после отправки. Пост пульса все еще работает, только не обновление загрузки. –

+0

Посмотрите, поможет ли редактирование. more coming – Todd

+0

Спасибо, я удалил точку с запятой. Я заменил сценарий загрузки следующим образом: ' ' я потом пытался добавить ' эхо '<тип скрипта = "текст/JavaScript">' 'loadstatus();' , ''; ' –

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