2012-08-15 117 views
0

我有一個來自WordPress試圖修改的WordPress插件的JavaScript文件。似乎越來越多的跨域請求帶有某種漏洞。正是這種功能:如何在javascript中傳遞url回調函數中的參數

function urlCallback(url){ 
    var req = url; 
    var head = document.getElementsByTagName("head").item(0); 
    var script = document.createElement("script"); 
    script.setAttribute("type", "text/javascript"); 
    script.setAttribute("src", req); 
    head.appendChild(script); 
} 

傳遞的網址是一樣的東西'http://url.com/page?callback=namespace.myFunction'其中myFunction是在腳本中別處定義的功能。

據我所知,這是在我的頁面頂部插入源url,導致瀏覽器加載該頁面。然後調用附加到該URL的回調函數,將結果作爲單個參數傳遞給示例函數myFunction。

我的問題是,我需要調用myFunction爲幾個不同的獨特的網址,但結果綁定到調用網址。 myFunction似乎在頁面完成加載時被調用,所以我不能簡單地保持它正在操作的數據集的計數。我需要一些方法讓myFunction通過在回調url中編碼的附加變量,或者myFunction知道它附加的url。

任何人都可以幫助我嗎?

編輯:

爲了進一步闡述,這裏是我的代碼的簡化版本:

var parseUrls = (function(){ 
    function urlCallback(url){ 
    var req = url; 
    // Here is where I need to save the url 
    var head = document.getElementsByTagName("head").item(0); 
    var script = document.createElement("script"); 
    script.setAttribute("type", "text/javascript"); 
    script.setAttribute("src", req); 
    head.appendChild(script); 
    } 

    return { 
    options: {}, 
    parseNextUrl: function(result) { 
     if (!result || !result.data) { return; } 
     var data = result.data; 
     // Here is where I need the url 

    }, 
    parseUrl: function(result) { 
     if (!result || !result.data) { return; } 
     var data = result.data; 
     for (var i = 0; i < data.length; i++) { 
     urlCallback(data[i].url + "/new_url/page?callback=parseUrls.parseNextUrl"); 
     } 
    }, 
    showResult: function(options){ 
     urlCallback("http://start.url.com/page?callback=parseUrls.parseUrl"); 
     this.options = options; 
    } 
    }; 
})(); 

只是要清楚每當源請求完成,parseNextUrl被調用。這意味着所有的urlCallback調用都已經完成。

+0

你有沒有例子說明它是如何在頁面上實際調用的?你在看什麼是「JSONP」的客戶端實現(JSON-「padded」)。它會創建一個新的'