Это мой HTML-код. Я хочу передать данные таблицы в мой CGI-скрипт, используя c ++.
<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. Но я не знаю, как вызвать скрипт cgi с помощью javascript и как передать данные в cgi из javascript. Мне нужно хранить данные таблицы в моем TextFile. Есть ли идея реализовать это в CGI & с ++?
С 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 поддерживает 2 разных способа передачи данных на страницу: GET и POST.
ПОЛУЧИТЬ:
когда браузер открывает URL: http://example.com?param1=value1¶m2 = значение2
В ваш 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 и хотите отправить запрос GET через ajax, используйте такой код:
$.ajax({
url: '/yourpage.cgi?param1=value1¶m2=value2',
});
СООБЩЕНИЕ:
$.post("/yourpage.cgi", { param1: "value1", param2: "value2" } );
Удачи 😉