如何在C语言中建立javascript和cgi之间的通信通道?

如何在C语言中建立javascript和cgi之间的通信通道?,javascript,c,cgi,Javascript,C,Cgi,如何使javascript与C中的cgi脚本通信?例如尝试 将递增的int值从CGI发送到javascript并在浏览器中显示。 在客户端,使用cgi脚本的get方法隐藏iframe: <<html><head><title>Javascript cgi</title> <style type="text/css"> #hiddenframe { display:none; } </style> <

如何使javascript与C中的cgi脚本通信?例如尝试 将递增的int值从CGI发送到javascript并在浏览器中显示。 在客户端,使用cgi脚本的get方法隐藏iframe:

 <<html><head><title>Javascript cgi</title>  
<style type="text/css">
  #hiddenframe { display:none; } 
</style>

<script type="text/javascript">
var value = 0;
function init() {
  document.getElementById('thevalue').innerHTML = value; 
  setInterval("get_value()", 1000);
}

function get_value() {
  value = thescript.value;
  document.getElementById('thevalue').innerHTML = value; 
  thescript.location.href = 'http://localhost/homecgi/cgi.exe';  
}    
onload = init;    
</script>
</head>

<body>
<div id="hiddenframe">
 <iframe src="http://localhost/homecgi/cgi.exe" name="thescript"></iframe>
</div>

<div id="thevalue"></div>
</body>
</html>

我用ajax和php做了一些尝试。这是XHR的客户端:

<html>
    <head>
     <script>
       var response;
     </script>
    </head>

    <body>   
    <p id="demo"></p>
    <input type="button" onclick="sendRequest()" value="String"> <br>

     <script>      
      function sendRequest() {        
        var http = createRequestObject(); 
        http.open("GET", "phptoajax.php?p=");
        http.onreadystatechange = function () { handleResponse(http); };
        http.send(null);        
    }

     function createRequestObject() {
        var http;
        if (navigator.appName == "Microsoft Internet Explorer") {
            http = new ActiveXObject("Microsoft.XMLHTTP");
        }
        else {
            http = new XMLHttpRequest();
        }
        return http;
    }

    function handleResponse(http) {    
        if (http.readyState == 4) {
            response = http.responseText;        
            document.getElementById("demo").innerHTML = response + "<br>";        
        }
    }     
     </script>    
    </body>
    </html>
CGI C:

int main() 
{ 

char *data_get;
char *string = "Hello World";

  printf("%s%c%c\n", "Content-Type:text/html;charset=iso-8859-1",13,10);     
  printf(" <html><title>hello</title><body> \n");       

     data_get = getenv("QUERY_STRING"); 

     if( !strcmp(getenv("REQUEST_METHOD"), "GET") ){

         // printf("<br> data_get: %s <br>\n", data_get);             
         printf("%s\n", string); // Sending to browser    
     }
    else if(!strcmp(getenv("REQUEST_METHOD"), "POST")){
        printf("<br> POST METHOD");           
     }          
   printf(" </body></html>");      
  return 0; 
} 
intmain()
{ 
字符*数据获取;
char*string=“Hello World”;
printf(“%s%c%c\n”,“内容类型:text/html;charset=iso-8859-1”,13,10);
printf(“hello\n”);
data_get=getenv(“查询字符串”);
if(!strcmp(getenv(“请求方法”),“GET”)){
//printf(“
数据获取:%s
\n”,数据获取); printf(“%s\n”,字符串);//发送到浏览器 } 否则如果(!strcmp(getenv(“请求方法”),“POST”)){ printf(“POST方法”); } printf(“”); 返回0; }

Cgi没有向浏览器发送任何内容。如何使用printf(“%s\n”,字符串);将“Hello World”打印到浏览器,就像echo$j一样;从php?

问题已解决

问题是第行中cgi脚本的路径:http.open(“GET”,“cgi.exe?p=”)

必须在本地主机上放置完整路径:

http.open("GET", "http://localhost/cgi-bin/cgi.exe?p=");

您是在尝试根据用户操作更新该值,还是该事件由服务器启动?可能能够解决您的问题,否则请检查以下内容。它是通过读取和更改服务器上的某些值并在浏览器上表示这些值来启动的。它的嵌入式http服务器在服务器端只有cgi,似乎不能使用XMLHttpRequest。但对于socket.io来说还不确定,需要检查一下是否可以使用它以及如何使用它。那么,您想要实现什么呢?如果您只想定期从服务器获取一些值,那么应该使用XMLHttpRequest以AJAX方式执行,并通过网络发送值。我已经很久没有使用C了,但是每次调用时,您的
main()
都会将
100
赋值给
j
,在执行后期增量时打印
j
,然后返回,显然它总是要写入
100
。如果希望单独调用脚本以共享信息,则需要将该信息保存在脚本之外的某个地方^^^^,但是如何在c中使用ajax和cgi呢?如何在C中响应来自cgi脚本的ajax请求?任何教程…?任何人!?在C中使用ajax和cgi脚本的教程?在C语言中是否有javascript对象与cgi服务器通信?
http.open("GET", "cgi.exe?p=");
int main() 
{ 

char *data_get;
char *string = "Hello World";

  printf("%s%c%c\n", "Content-Type:text/html;charset=iso-8859-1",13,10);     
  printf(" <html><title>hello</title><body> \n");       

     data_get = getenv("QUERY_STRING"); 

     if( !strcmp(getenv("REQUEST_METHOD"), "GET") ){

         // printf("<br> data_get: %s <br>\n", data_get);             
         printf("%s\n", string); // Sending to browser    
     }
    else if(!strcmp(getenv("REQUEST_METHOD"), "POST")){
        printf("<br> POST METHOD");           
     }          
   printf(" </body></html>");      
  return 0; 
} 
http.open("GET", "http://localhost/cgi-bin/cgi.exe?p=");