2012-10-10 10 views
1

我嘗試設置一個變量與我的CGI腳本中的JavaScript功能託管在本地IIS(Win7的):問題從一個C++ 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> 

但是當我打開HTML文件與JS代碼文件撰寫什麼都不做。當我用螢火蟲分析頁面時,js-tag內部的很多怪異字符以及這些字符中間的某處都有我的輸出:「var value = 2」。

有沒有人知道發生了什麼事? 任何幫助將不勝感激!

編輯:從這裏什麼螢火片斷告訴我是腳本標記之間:

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

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

?�������������0���������������� ��H��� 
[email protected]��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

其故意將「<! - 」留下,或者您忘了將它評論爲另一個? – jviotti

+0

另一個不應該被註釋掉。此評論僅適用於JavaScript已禁用的瀏覽器。這是一個複製和粘貼錯誤,但無論如何,謝謝你。 – samoncode

+0

此外,您是否打算在**。/ cgi-bin/value.exe **左邊留下公開引號? – enhzflep

回答

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> 
:當然,你得從本地主機(或其他服務器)

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; 
} 

輸出運行

是的,'MZ'馬上給它 - Mark Zbikowski。

基本上,它實際上提供了exe文件本身,而不僅僅是它的結果。

如果使用十六進制編輯器打開文件,它看起來非常相似。

當你說,這是'非常'你有什麼,魔鬼總是在細節。

還有更多嗎?

我有2個建議 - (1)提供最小來源,複製你的問題,因爲我已經做了 (2)改變文件擴展名的CGI和更改JavaScript以反映這一點。 (你還應該養成向項目中添加另一個構建目標的習慣,並將其輸出文件夾設置爲cgi-bin文件夾,也是cgi的擴展,而不是exe)。這對這個問題應該沒有什麼不同,但通常情況下,不要在該文件夾中擁有易於執行的文件 - 這很容易,因爲您可以雙擊它們並運行它們,如果您使用完整路徑,則始終可以從命令行運行,就像apache一樣。

啊!剛剛意識到你正在使用IIS--我認爲你發現它是一種混淆你的輸出的東西。可能讓point(1)沒有實際意義 - 它聽起來更像是一個IIS設置 - 儘管它也可以提供文件的內容,而不是輸出 - 僅僅是基於它的擴展。試一試!

+0

這就是我所擁有的。但現在它應該像這樣工作......我編輯了我的帖子,向您展示我得到的輸出,也許你知道它可能來自哪裏? – samoncode

+0

我的評論太大了。幾分鐘後看到我更新的答案。 – enhzflep

+0

謝謝!這是一個IIS設置。我必須爲.exe文件添加一個腳本處理程序,否則它只是返回文件。 – samoncode