如何将 HTML 表数据传递给 cgi 和 c++

How to pass HTML Table Data to cgi and c++

本文关键字:cgi c++ 数据 HTML      更新时间:2023-10-16

这是我的html代码。我想使用 c++ 将表数据传递给我的 CGI 脚本。

    <table>
    <thead>
        <th>Ex. Date</th>
        <th>Security<br /> Symbol</th>
        <th>Factor</th>
    </thead>
    <tbody>
        <tr>
            <td>29/01/1993</td>
            <td>uaasset</td>
            <td>333</td>
        </tr>
        <tr>
            <td>11/06/1995</td>
            <td>ibm</td>
            <td>7</td>
        </tr>
    </tbody>
    </table>
</div><br />
<input type="submit" value="Save" />
        </form> 

在这里,我已经发布了我的CGI代码。

char *data;
char* lpszContentLength;
int nContentLength;
lpszContentLength = getenv("CONTENT_LENGTH");   
if(lpszContentLength == NULL)   
   return -1;       
nContentLength = atoi(lpszContentLength);
if(nContentLength == 0) 
data = (char*) malloc(nContentLength+1);    
if(data == NULL)    
  return -1;
memset(data, 0, nContentLength+1);  
if(fread(data, 1, nContentLength, stdin) == 0)  // get the data
    return -1;
if(ferror(stdin))   // die if there was an fread error
  return -1;
   cout << data<<"<br>";

现在我没有收到任何数据到我的 cgi.为什么我不能将表数据传递给 cgi。我正在考虑从javascript传递表数据。但是我不知道如何使用javascript调用cgi脚本以及如何将数据从javascript传递给cgi。我需要将表数据存储到我的文本文件中。有什么想法可以在cgi和c ++中实现这一点吗?

使用 html,您无法发布表标记,因为它只是在 HTML 网页中执行的输出,您应该在表单提交中发布数据。

<form onsubmit="document.getElementById('hdnFormField').value = document.getElementById('tblData').innerHTML;" >
    <table id="tblData">
        ...yourTable..
    </table>
    <input type="hidden" name="hdnFormField" id="hdnFormField" />
    <input type="submit" value="Save" />
</form> 

在背面,您应该阅读Request.Form["hdnFormField"].对不起,我不知道如何在 cgi 中读入。

HTTP 支持两种不同的方式将数据传递到页面:GET 和 POST。

获取:当浏览器打开网址时:http://example.com?param1=value1&param2=value2到你的cgi脚本将输入这样的数据:param1 =>值,param2 =>值2。要从 C 获取此数据,您可以从环境中获取它们:

char* val1 = getenv("param1");
char* val2 = getenv("param2");

发布:发布 -> 浏览器发送 http 请求正文中的所有数据。发送到cgi的所有数据都经过stdin。

char Buffer[512]={0}; 
int InputLength = atoi( getenv("INPUT_LENGTH") ); 
InputLength = min( InputLength, sizeof(Buffer)-1 ); /* Avoid buffer overflow */ 
fread( Buffer, InputLength, 1, stdin ); 

Javascript:GET:发送获取请求非常简单。如果你使用 jQuery 并希望通过 ajax 发送 GET 请求,请使用以下代码:

$.ajax({
  url: '/yourpage.cgi?param1=value1&param2=value2',
}); 

发布:

$.post("/yourpage.cgi", { param1: "value1", param2: "value2" } );

祝你好运;-)