2010-06-09 89 views
5

我正在嘗試使用jquery內的greasemonkey腳本獲取jsonp回調。這裏是我的jQuery:未定義JSONP回調方法

$.ajax({ 
    url: "http://mydomain.com/MyWebService?callback=?", 
    data: { authkey: "temphash" }, 
    type: "get", 
    dataType: "json", 
    cache: false, 
    success: function(data) { 
     console.log(data); 
    } 
}); 

在我的web服務(asp.net)我返回與內容類型的application/javascript響應。服務器實際上是發回的響應是:

jsonp1276109314602({"message":"I'm getting tired of this not working"}) 

jsonp1276109314602方法名稱是由jQuery的被隨機生成的,並且我與Request.QueryString["callback"]

但是我的成功函數不會被調用和螢火蟲抓住它控制檯給我一個錯誤,說jsonp1276109314602 is not defined

我在做什麼錯?

備註 我從craigslist頁面上的greasemonkey腳本進行此調用。這是一個跨域請求,但我可以看到請求實際上將其發送到服務器並返回一個良好的響應,但無論出於何種原因,當響應返回時,jquery創建的已註冊回調似乎不存在。如果我在craigslist頁面的螢火蟲控制檯中運行腳本,但不能在從greasemonkey腳本運行腳本時運行正常。使用JSONP加載一個JSON塊:

+0

你在的GreaseMonkey腳本嵌入jQuery的或單獨加載它? – James 2010-06-09 19:18:46

+0

...或者,您正在增強的頁面上是否已有jQuery? – James 2010-06-09 19:19:09

+0

我已經通過greasemonkey腳本加載了 – Micah 2010-06-09 19:28:33

回答

2

事實證明,你必須做一些額外的mon((雙關語意圖),讓它在油門猴腳本中工作。

長答案可以在這裏找到:jQuery.getJSON inside a greasemonkey user script

簡短的回答是溝JSONP途徑,包括這在你的腳本:

// @require http://courses.ischool.berkeley.edu/i290-4/f09/resources/gm_jq_xhr.js 

不知道我理解這一切,但儘管如此它像一個冠軍,我能夠做出跨域來自我的腳本的請求。

+1

如果您對'gm_jq_xhr.js'腳本的工作方式感興趣,可以閱讀我寫的[解釋](http://ryangreenberg.com/archives/2010/03/greasemonkey_jquery.php)。 – Ryan 2010-08-29 02:19:58

3

你是否已經嘗試過:

$.ajax({ 
    url: "http://mydomain.com/MyWebService", 
    data: { authkey: "temphash" }, 
    type: "get", 
    dataType: "jsonp", 
    cache: false, 
    success: function(data) { 
     console.log(data); 
    } 
}); 

docs

「JSONP」。將添加額外的「?callback =?」到您的URL的末尾來指定回調。

我沒有檢查過jQuery的源代碼,但可能不會創建回調函數,除非您爲dataType選項指定jsonp。

相關問題