将信息从c ++ cgi脚本传递到javascript标记的问题

时间:2012-10-10 17:57:29

标签: javascript c++ web-applications cgi

我尝试使用托管在本地IIS(Win7)上的cgi脚本为javascript函数设置变量:

CGI:

cout<<"Content-type: text/javascript\r\n\r\n";
cout<<"var value=2;";

的javascript:

<script type="text/javascript" src="./cgi-bin/value.exe"></script>
<script type="text/javascript">
<!--
document.write('The number is: ' + value);
-->
</script>

但是当我用js-code document.write打开html文件时什么也没做。当我用firebug分析页面时,js-tag中的很多奇怪的字符和这些字符中间的某个地方都有我的输出:“var value = 2”。

有人知道发生了什么事吗? 任何帮助将不胜感激!

编辑:这里有一个firebug告诉我的片段在脚本标签之间:

MZ�������ÿÿ��¸�������@�����

)��")��4)��F)��\)��p)��z)��)��)��)��¬)��Æ)
��Ø)��)��ô(��Ê(��¼  (��°(��¤(��(��(��(�
(��l(��^(��<(��à(����������@���������È@�û��
������bad allocation��Content-type: text/javascript
���var NumberOfFiles = 2; 

?�������������0���������������� ��H���
X@��V�������<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" 
version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
</assemblyIdentity>
</dependentAssembly>
</dependency>
/assembly>PAPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDING
XXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADD���0�������

有谁可以告诉这个输出来自哪里?

1 个答案:

答案 0 :(得分:0)

这里好像很好。当然,你必须从localhost(或其他一些服务器)运行它

<强> testCgi.html

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="/cgi-bin/cgiBinNum.cgi"></script>
<script type="text/javascript">
    document.write('The number is: ' + value);
</script>
</head>
<body>
</body>
</html>

<强> cgiBinNum.cpp

#include <iostream>

using namespace std;

int main()
{
    cout<<"Content-type: text/javascript\r\n\r\n";
    cout<<"var value=2;";
    return 0;
}

<强>输出:

<!DOCTYPE html>
<html><head>

<script type="text/javascript" src="/cgi-bin/cgiBinNum.cgi"></script>
<script type="text/javascript">
document.write('The number is: ' + value);
</script></head><body>The number is: 2




</body></html>

是的,'MZ'立刻将它送走 - Mark Zbikowski。

基本上,它实际上是提供exe文件本身,而不仅仅是它的结果。

如果您在十六进制编辑器中打开文件,它看起来非常相似。

当你说,你所拥有的“非常多”时,魔鬼总是在细节中。

还有更多吗?

我有2个建议 - (1)提供最小的完整源,复制你的问题,正如我所做的那样 (2)将文件扩展名更改为.cgi并更改javascript以反映此情况。 (你还应养成为项目添加另一个构建目标并将其输出文件夹设置为cgi-bin文件夹的习惯,也就是cgi的扩展,而不是exe)这不应该对这个问题产生影响,但一般来说,最好不要在该文件夹中容易生成可执行文件 - 很容易,因为你可以双击它们并运行它们,如果你使用完整路径,你总是可以从命令行运行,就像apache那样。

唉唉!刚刚意识到你正在使用IIS - 我认为你发现它是b @ stard的东西会弄乱你的输出。可能让点(1)没有实际意义 - 听起来它更像是IIS设置 - 虽然它也可以提供文件的内容而不是输出 - 只是基于它的扩展。试一试!