2012-07-18 88 views
0

方案方法來調用遠程腳本

一個頁面調用可以在這個網址遠程腳本:http://url.to.script/myScript?ScriptParamsList。讓我們假設:不需要

  • 異步執行。
  • 顯示輸出不是必需的。
  • 腳本在按鈕單擊事件上調用。讓處理程序()是JavaScript的事件處理程序:

    function Handler() { //invoke the remote script }

有幾種方法可以實現處理程序()函數:

  • 腳本VS img標籤

document.write('<script src="http://url.to.script/myScript?ScriptParamsList" type="text/javascript"></script>');

document.write('<img src="http://url.to.script/myScript?ScriptParamsList" />');

  • jQuery的html的()與.load()

$('#TargetDiv').html('<img src="http://url.to.script/myScript?ScriptParamsList" />');

$('#TargetDiv').load('http://url.to.script/myScript?ScriptParamsList');

問題

哪些是優點和缺點?

+0

''?你的意思是''?順便說一下,你正在比較蘋果和橘子...... – 2012-07-18 14:07:15

+0

@Rob W:編輯。謝謝。 – 2012-07-18 14:10:10

回答

1
  • document.write將在文檔加載完成後調用當前文檔。切勿使用此方法。
  • 使用<script>可以讓您從外部域獲取請求,而不會受到同一個源策略的阻礙。另外,在服務器的響應中,您可以添加和執行JavaScript,這可能很有用。
  • 使用.html('<img ...>')是沒有意義的,除非您的服務器返回帶有有意義數據的圖像。如果你打算只觸發服務器請求,下面會更好:

    new Image().src = 'http://url.to.script/myScript?...'; 
    
  • $('..').load不會如果URL位於因爲same origin policy在不同的域,工作。

我投票給new Image().src = '..';方法。如果您不喜歡這種語法,並且想要更多的jQuery,請使用:

$('<img>').attr('src', 'http://...'); 

注意:結果可能會被緩存。如果您不希望發生這種情況,請附加一個隨機查詢字符串以中斷緩存(例如,url = url + '&_t=' + new Date().getTime())。

+0

+1用於緩存的結果備註。 – 2012-07-18 14:24:38