2015-01-09 2 views
0

Я ударился головой о стену, борясь с формой, которую нужно отправить на мой веб-сервер Arduino и использовать ответ от нее, чтобы обновить div. Я уже много раз пробовал об этом, пробовал много примеров, которые я нашел, включая один на jQuery.post().Form Post Callback

Вот мой код:

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script><script> 
 
screen.lockOrientation("portrait") || screen.mozLockOrientation("portrait") || screen.msLockOrientation("portrait"); 
 
$("#form").submit(function(event) { 
 
\t event.preventDefault(); 
 
\t $.post(url, {serial: $("#serial").val()}) 
 
\t .done(function(data) { 
 
\t $("#monitor").append($(data));});}); 
 
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
 
<html><head> 
 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
 
</head> 
 
<body id="Body"> 
 
<h1>>Automação</h1> 
 
<form name="form" id="form" class="form" action="URL" method="POST"> 
 
<input type="text" id="serial" name="serial"> 
 
<input type="submit" id="enter" value="Enter"> 
 
</form> 
 
<div name="monitor" id="monitor" class="monitor"></div> 
 
</body> 
 
</html>

Я пытаюсь "имитируют" серийный монитор с Arduino IDE на моем веб-сервер, чтобы получить удаленный доступ.

Проблема в том, что я пытаюсь выполнить JavaScript, не выполняет запрос на отправку. Сообщение было выполнено, но, похоже, из формы без функции обратного вызова (игнорируя ответ сервера), потому что, если я удалю метод = POST или URL-адрес из формы (разрешая его только в JavaScript для тестовых целей) сообщение не запускается.

Ответ я получаю от сервера, это такие вещи, которые я хотел бы добавить к монитору DIV:

freeMEMORY() = 6498 bytes<br/> 

или

Arduino have been running for: 00 days 01 hours 25 minutes 25 seconds.<br/> 
+0

'console.log (данных);' –

+0

при использовании '$ (HTMLString)', то HTMLString должен начинаться и заканчиваться HTML теги. http://api.jquery.com/jQuery/#jQuery2 –

+0

Нет, я буквально называю 'console.log (data);', на своем собственном, в сделанном обратном вызове. затем прочитайте консоль. –

ответ

0

Edit: Я думаю, что фактические ошибки что у вас есть $(data), где вы должны иметь только data (аргумент, который вы передаете вам функцию обратного вызова (.done). Я отредактировал свой ответ, чтобы отразить это.

Я не вижу, где переменная JS url установлена ​​с фактической страницей действия.

Попробуйте это и задокументировать атрибут на form тег action:

$("#form").submit(function(event) { 
    event.preventDefault(); 
    $.post($(this).attr("action"), { serial: $("#serial").val() }) 
    .done(function(data) { 
     $("#monitor").append(data); 
    }); 
}); 
+0

На самом деле URL-адрес не является переменной, я просто удалил IP-адрес. Это не работает, POST выполняется, но ответ отображается на пустой странице, а не в div (как и раньше). – Arank