每次单击按钮时都执行CGI而不更改当前的html页面

时间:2011-05-04 11:22:26

标签: html apache cgi ssi

我开始在家庭服务器上实习,能够从网页控制多媒体设备。全球的想法是,只需单击一个按钮,就可以在服务器上生成某个脚本并控制微控制器。

我的导师建立了一个他给我的简单网站,使用AJAX始终保持在1页,并根据用户操作显示菜单(如果不使用则隐藏,如果使用则将其恢复到正面)。

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

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

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

我可能使用了错误的工具。我应该继续使用CGI吗?或者还有其他东西(比如AJAX,jquery)实际上是为了做我想做的事而设计的吗?

感谢您阅读。

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

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

1 个答案:

答案 0 :(得分: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
    });
});