1

我开始在家庭服务器上实习,该服务器能够从网页控制多个 domotics 设备。全局想法是基于单击按钮,在服务器上生成特定脚本并控制微控制器。

我的导师建立了一个他给我的简单网站,使用 AJAX 始终停留在一个页面上,并根据用户操作带来菜单(如果不使用它们会被隐藏,如果使用则会回到前面)。

我已经设置了一个配置为执行 CGI 脚本的 apache 服务器,它可以工作。为了始终停留在一个页面上,我使用了“204 No Content”返回技巧,因此服务器对该页面的回答是“我没有什么要说的,就停留在这个页面上”。

但我遇到的一个问题是 CGI 只启动了一次。如果我第一次单击该按钮,它会起作用,之后什么也不会发生。

我尝试使用 SSI (shtml) 在按钮代码中使用,而不是使用带有 GET 方法的 FORM,但脚本仍然不会执行两次。

我可能使用了错误的工具。我应该继续使用 CGI 吗?还是有其他东西(如 AJAX、jquery)实际上是为了做我想要的?

感谢您阅读。

编辑:我找到了解决方法(总是在寻找几天的答案后绝望的时候,我去论坛然后在接下来的一个小时内找到一个很好的解决方案....)我使用了一个基本链接,并且由于某种原因,它的行为与使用按钮不同。任何。我对所使用技术的审问仍然存在:)

EDIT2:我的解决方案很糟糕,由于某种原因,在页面刷新时(或第一次加载页面时)也会调用脚本。这很奇怪,因为它在里面,所以只有当我点击它时才会产生它......

4

1 回答 1

0

熟悉 jQuery 及其AJAX API。除非您使用 AJAX,否则无法使其不加载新页面。下面是一个 AJAX 调用的示例:

$.ajax({
    url: 'http://server.domain.com/cgi-bin/myfile.cgi',
    data: {
       x: 1,
       today: '20110504',
       user: 'Joe'
    }
}).success(function(data, status, xhr) {
    if (data)
        alert(data);
});

这适用于 jQuery 1.5 或更高版本。您可以在单击某个按钮时运行它,如下所示:

按钮的 HTML:

<input type="button" id="doThis"/>

JavaScript:

$(function() {
    $('#doThis').click(function() {
        //put AJAX sample shown above, here
    });
});
于 2011-05-04T12:36:28.690 回答