0

这是我的 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++ 中实现吗?

4

2 回答 2

0

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

于 2012-09-18T08:31:17.000 回答
0

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

GET: 当浏览器打开 url: http://example.com?param1=value1¶m2=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" } );

祝你好运 ;-)

于 2012-09-18T08:59:49.347 回答