2010-09-03 109 views
0

我不能相信我卡在這裏,但我似乎無法使用Windows腳本宿主或簡單的.hta文件發出簡單的HTTP請求。與Windows腳本主機(.hta)HTTP請求

這是我的代碼:

<script language="Javascript"> 
window.onload = function() { 
    var http = CreateObject("Microsoft.XmlHttp"); 
}; 
</script> 

當我開始名.hta文件,我得到一個JavaScript錯誤說像Object Expected ..這是很煩人的,因爲它是一個簡單的任務,我真的不能調試它。

任何想法如何調試這個東西?謝謝。

+0

不知道信息的可靠性如何,但是這裏有一個討論這個問題的2005年論壇帖子,以及一個聲稱它有效的例子。 http://www.powerbasic.com/support/forums/Forum9/HTML/001007.html – 2010-09-03 09:55:04

+0

@Pekka:但使用ActiveX我不能在其他域(僅本地domanis)上請求,所以我得到一個拒絕訪問。 – 2010-09-03 10:07:13

回答

1

在我看來,你應該使用

var http = new window.ActiveXObject("Microsoft.XMLHTTP"); 

或只是

var http = new ActiveXObject("Microsoft.XMLHTTP"); 

名.hta文件,而不是CreateObject()內。

已更新:嗨盧卡!我有意見沒有太大的地方,可以發佈鏈接不太好,所以我追加我的答案:

,你從你的問題的代碼做的錯誤是,試圖在JavaScript等語言的元素使用。在VBScript中存在CreateObject,但它是VBScript語言的一個特性。在JScript/JavaScript中,您必須改用new ActiveXObject

此外,您在您的評論中多次提到有關跨域問題的提示,但從未描述過您做了什麼。如果你想得到關於這個問題的幫助,你應該在你的問題中包含更多關於你做什麼的信息。可能你可以在WSH或C中包含代碼,其中包含相應版本的.HTA文件。如果您描述爲什麼要使用.HTA文件而不是WScript/CScript或PowerShell,這也會很有幫助。在哪種情況下你想使用.HTA文件?

+0

但是當我試圖請求一個不屬於我的域的時候,我的訪問被拒絕......這似乎與瀏覽器中的行爲一樣......是否有一種方法可以使用本機庫來執行此操作?這應該是可能的。 – 2010-09-03 10:44:47

+0

@Luca Matteis:問題跨域安全問題將以其他方式解決。例如使用服務器端代理(請參閱http://www.yaldex.com/ajax-tutorial-4/BBL0044.html)。你應該在你的問題中更準確地描述你的情況,然後可以給你更準確的建議。 – Oleg 2010-09-03 10:56:13

+0

@Oleg:當然,我知道瀏覽器沙箱不能完成跨站點腳本,但是.hta並不完全是瀏覽器沙箱......它可以通過許多Windows的apis爲您提供完全的訪問控制。我正在尋找的是在瀏覽器沙箱外進行HTTP請求的API調用。我希望這是有道理的......這是一個非常簡單的任務。 – 2010-09-03 11:07:03

0

你的函數只是創建對象然後銷燬它。嘗試返回到外部變量或在函數中執行更多操作。