2013-01-07 22 views
1

我正在製作一個廣播電子郵件模板,它將從RSS提要中將最新的三篇文章從我們的博客中拉出並將相關部分插入到文檔中。Socket對象的InDesign腳本會產生神祕的錯誤消息

我看着documentation,並根據有關對象File位,我自己的一些調試和InDesign forum post我明白了,這是不可能的使用File對象源的在線XML文件。

替代方案(無需藉助外部腳本,其中一個對我來說不起作用)似乎是使用Socket對象。於是我又回到了文件和複製/粘貼此代碼逐字從那裏:

reply = ""; 
conn = new Socket; 
// access Adobe’s home page 
if (conn.open ("www.adobe.com:80")) { 
// send a HTTP GET request 
conn.write ("GET /index.html HTTP/1.0\n\n"); 
// and read the server’s reply 
reply = conn.read(999999); 
conn.close(); 
} 

當我跑了,我收到這個描述性錯誤消息:

Thanks for this error message, Adobe!

一種「89858搜索JavaScript錯誤「沒有任何用處。

所以我卡住了。 Adobe的代碼示例有一個錯誤,或者更可能是我的一端出現了問題。如果我不得不猜測,我猜測這是一種代理問題,但我不確定,不知道如何找出答案。

任何人都可以幫忙嗎? Socket這個對象的原理對我來說很有意義,但是如果我連樣本都無法工作,我也沒有任何可以解決的問題。

回答

2

當您從函數調用中返回某些對象(XML,Socket)時,上述錯誤發生,但返回值不會被分配到任何位置。

function test() { 
    var xml = new XML('<test />'); 
    return xml; 
} 
test(); 

以上將導致錯誤。爲了解決它,你必須在某處指定返回值。

var result = test(); 

儘量把所有收集所有的函數調用的結果。我不確定哪一個會導致錯誤。

var reply = ""; 
var conn = new Socket; 
// access Adobe’s home page 
if (conn.open ("www.adobe.com:80")) { 
    // send a HTTP GET request 
    var result = conn.write ("GET /index.html HTTP/1.0\n\n"); 
    // and read the server’s reply 
    reply = conn.read(999999); 
    var close = conn.close(); 
} 
+0

我試圖將您的響應與我的情況聯繫起來,而且我遇到了麻煩。如果我'提醒(回覆)'它不會再拋出錯誤,但警報是空的。如果我添加'toString()',則相同。我不認爲我可以在任何地方添加「返回」值,或者爲函數設置變量,因爲Adobe的樣本不包含在函數中。如果我正確理解你的觀點,那麼'reply'與你的例子中的'result'做的事情不一樣嗎?但它仍然不起作用。感謝您的幫助,我真的很感激! – Brendan

+0

嘿,看看我的「編輯」版本,也許那個作品 – butterbrot

+0

我玩了一段時間,並添加了一個'else'語句並做了alert(conn.error);'是最有效的方法來處理所有事情;它給了我一個描述性的錯誤信息。我已經發布了這個作爲一個單獨的答案,但它符合你的解釋,所以我只是在這裏評論它!謝謝你的幫助! – Brendan