我尝试使用托管在本地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�������
有谁可以告诉这个输出来自哪里?
答案 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设置 - 虽然它也可以提供文件的内容而不是输出 - 只是基于它的扩展。试一试!