如何使用XMLHttpRequest ajax从cgi Cpp返回值到HTML



我有HTML页面与ajax XMLHttpRequest访问c++ .cgi文件。我得到的值从HTML传递到。cgi,我需要得到"成功"或"失败"的消息回来。这就是我的目标。

我的HTML代码:
<!DOCTYPE html>
<html>
<head>
<script type = "text/javascript">
var XMLHttp;
if(navigator.appName == "Microsoft Internet Explorer") {
        XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
        XMLHttp = new XMLHttpRequest();
}

function getresponse () {
    var fanme = document.getElementById('fname').value ;
    var postData;
    postData += fname;
    XMLHttp.open("POST", "ajaxtry.cgi", true);
    XMLHttp.onreadystatechange = function() {
        document.getElementById('response_area').innerHTML = XMLHttp.responseText;  
    }
    // Set the appropriate HTTP request headers
        XMLHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        XMLHttp.setRequestHeader("Content-length", postData.length);
       // Make request
        XMLHttp.send(postData);

}
</script>
<h1>Sample application</h1>
    First Names(s)<input onkeyup = "javascript: getresponse ()" id="fname">
<div id = "response_area">
</div>

</body>
</html>

和CPP .cgi文件:

#include <unistd.h>
#include <iostream>
#include <vector>
#include <string>
#include "cgicc/Cgicc.h"
#include "cgicc/HTTPHTMLHeader.h"
#include "cgicc/HTMLClasses.h"
#include <stdio.h>
#include <string.h>
using namespace std;
using namespace cgicc;
 int main(int argc, char **argv)
 {
    Cgicc cgi;  
    try {
        form_iterator fname = cgi.getElement("fname");
        form_iterator sname = cgi.getElement("sname");
          if(null != **fname) 
           {
             cout<<"sucess";
           }
          else
             cout<<"failed";
       }
        catch(exception& e) { }
    return 0 ;
 }

我得到的输出如下:一些编码值:

ELF>�@@@1@8 @ @@@@@��88@8@@@�� ��`�`�@ ��`�`TT@T@DDP�td��@�@LLQ�tdR�td��`�`((/lib64/ld-linux-x86-64.so.2GNU GNUMh���N��N틟����~��0!P

为什么我不能得到成功或失败的消息回到Div的内部HTML ?少了什么吗?有什么建议吗?

您得到的输出似乎是您的C代码本身的编译二进制文件。

您需要配置服务器执行程序并返回响应,而不是将其作为静态文件提供。

一般来说,你需要这样写:

<Directory "/usr/local/apache2/htdocs/somedir">
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory>

详细指南见手册

最新更新