2014-01-07 35 views
0

我想使用$.ajax w/JSON數據(window.jsonData = '{"dataCallback":[{"key":"val"}]})';)存儲在同一本地js文檔中的全局變量中。這是可能的,如果是的話,我會怎麼做?

更新:它看起來像$.ajax()$.getJSON()$.get()$.getScript()都需要URL(可以指向本地或遠程文件)作爲數據源。

如何使用全球window.jsonData作爲數據來源?

參見:http://jsfiddle.net/Dns2r/。隨意玩耍。

+0

如果響應中包含'window.jsonData ='和';',那麼這是一個帶有[object literal]的JavaScript響應(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Object_literals)(JSON的語法來自它)。你應該可以用''.getScript()'](http://api.jquery.com/jQuery.getScript/)來請求它。 –

+0

@JonathanLonowski $ .getScript()'需要url作爲數據源。我怎樣才能讓它接受全局變量'window.jsonData'作爲數據源? – Steve

+0

您能否提供一些背景信息來向我們說明您爲什麼需要這樣做?這可能是因爲你正試圖解決一個更好的解決問題的方法。 – crad

回答

0

這聽起來像你想嘲笑一個Ajax請求並返回本地數據來代替。如果是這樣的話,給MockJax一掄:

window.jsonData = '{"dataCallback":[{"key":"val"}]})'; 

// Set up the mockjax handler 
$.mockjax({ 
    url: '/some/url', 
    responseText: window.jsonData 
}); 

// Now call the ajax method of your choice 
$.getJSON('/some/url', function (data) { 
    console.log(data.dataCallback[0].key); // "val" 
}); 

希望這是你以後在做什麼!

0

是的,但是您必須在Ajax成功回調中使用eval responseText,或者使用jQuery對JSONP的內置支持。

另一個StackOverflow上的問題,這可能有助於:

Basic example of using .ajax() with JSONP?

+0

對,我怎麼設置它?我會拋出一個jsfiddle讓我們一起玩。給我一點時間。謝謝回覆! :) – Steve

+0

更新:'eval(window.jsonData)'拋出一個錯誤。不幸的是,'.ajax()'需要url作爲數據源。我怎樣才能讓它接受全局變量'window.jsonData'作爲數據源? – Steve

+0

ajax響應需要是聲明和填充該變量的有效JavaScript。 –