2015-01-09 82 views
0

我正在靠墙撞着我的头,挣扎着一个需要发布到我的Arduino网络服务器并使用它的响应来更新div的窗体。我已经对此进行了很多搜索,尝试了很多例子,包括jQuery.post()Form Post回调

这里是我的代码:

<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都不执行发布请求。该帖子已被执行,但似乎来自没有回调函数的形式(忽略服务器答案),因为如果我从表单中删除method = 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(数据);'使用'$(htmlstring)时 – 2015-01-09 22:49:20

+0

'的htmlstring必须开始和结束HTML标签。 http://api.jquery.com/jQuery/#jQuery2 – 2015-01-09 22:51:40

+0

不,我在字面意思是'console.log(data);',在它自己的完成回调中。之后阅读控制台。 – 2015-01-09 22:54:08

回答

0

编辑:我认为实际的错误是你有$(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 2015-01-09 22:43:38