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 Webページで行う出力であるため、フォーム送信でデータを投稿する必要があるためです。

<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: Post -> ブラウザはすべてのデータを 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: 非常にシンプルな 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 に答える