【问题标题】:How to pass HTML Table Data to cgi and c++如何将 HTML 表格数据传递给 cgi 和 c++
【发布时间】:2012-09-18 17:05:12
【问题描述】:

这是我的 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。我需要将表数据存储到我的 TextFile。有什么想法可以在 cgi & c++ 中实现吗?

【问题讨论】:

  • 您需要为此使用http://en.wikipedia.org/wiki/XMLHttpRequest

标签: javascript c++ cgi command-line-arguments html-table


【解决方案1】:

使用 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 中读取。

【讨论】:

    【解决方案2】:

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

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

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

    发布: Post -> 浏览器在 http 请求正文中发送所有数据。发送到 cgi 的所有数据都通过标准输入。

    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" } );
    

    祝你好运;-)

    【讨论】:

    • 另外,你的想法有问题。您不能将“表数据”传递给 cgi。浏览器仅发送数据,即“输入”html 标记中的数据。
      .. 这里有一些 html
      跨度>
    • 好信息。但我不想使用 Ajax 和 Jquery。但我尝试了这段代码。工作正常。我也用 JavaScript 实现了它。
    猜你喜欢
    • 2018-11-15
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多