2010-02-05 72 views
0

披露:我什么都不知道Web编程使用西纳特拉和红宝石接口到HTML按钮

背景问题: 我有一个环境试验室测试嵌入式计算机在不同温度下。它由一个Windows应用程序控制。我可以通过ruby和控制应用程序的Win32API接口来控制室。该厅远离我的办公室,我将远程监控状态并通过Web界面触发更改。 Sinatra可以很容易地通过Web服务器显示状态。

我的问题:我想单击状态网页上的按钮,并通过Sinatra和Ruby发送命令到应用程序而无需切换到其他页面。我无法找到任何这样的例子或信息。

答案:您可以使用Ajax(如在接受的答案中),但是我将发布并重新加载页面。这简单得多,但不够流畅。

+0

你想使用ajax ...但是也许在这之前学习一下web开发,这并不容易。 – marcgg 2010-02-05 13:27:41

回答

1

你已经有一个表单发布到sinatra处理程序,并做你想要的?

如果是这样,你可以很容易地通过使用jQuery使它成为ajaxy。

  1. 添加的jquery.js到你的公开目录&要求它从布局

  2. 添加一些JS张贴到您的处理程序被点击您的按钮时。

    // assuming your form has id=myform 
    // defines a callback on submission of the form #myform. 
    $("#myform").submit(function() { 
        //posts the contents of the form to /action using ajax 
        $.post("/action", $("#myform").serialize(), function(result){ 
        // assuming result is a string of the updated data in html 
        // and assuming that your data goes in an element with the id data-table 
        $("#data-table").html(result) 
        }); 
        return false; // prevents the form from submitting normally 
    }); 
    

jquery的文档为

1

我想[...]通过(服务器)[...],而无需切换到不同的页面

这被称为阿贾克斯,通常使用XMLHttpRequest实现发送命令。