2014-01-07 36 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。 –