我正在开发一个访问一些外部JSON数据的Web应用程序。我目前正在使用jQuery的getJSON来获取数据并调用回调。
我家的网络很糟糕,所以我经常没有联系。我正在寻找一种方法来开发这个应用程序,同时断开互联网。
我最初的想法是设置一个OFFLINE变量,它将脚本的位置更改为本地文件,但由于jQuery的getJSON使用动态命名的函数进行回调,因此需要一些服务器智能。
有关getJSON回调如何在此处工作的更多信息:http://docs.jquery.com/Ajax/jQuery.getJSON
我确信这是一种更简单的方法。有什么建议吗?
** 修改 **
让我试着澄清一下 我目前正在运行本地Web服务器。我必须 - 出于安全原因,脚本标签无法引用本地文件。
我目前正在使用网址调用getJSON:http://twitter.com/status/user_timeline/user.json?callback=?
如果我下载了json响应并将其托管在本地网络服务器上,它将无法工作,因为回调名称每次都会更改,但Feed将具有最初提取的功能名称。
答案 0 :(得分:1)
我有类似的问题。尝试使用xampp在您的计算机上轻松安装php / apache / mysql。
我使用dreamhost来托管我的网站。我使用subversion存储库管理所有内容,当我准备好进行更改时,我可以在我的实时网站上执行'svn update'。
我还定义了相对于base_url
变量的所有路径,该变量根据http主机设置,因此我不需要为我的站点更改任何内容以在不同的Web服务器上运行。我使用codeigniter,我的配置文件如下所示:
switch($_SERVER['HTTP_HOST']) {
case "claytonhp":
$config['base_url'] = "http://claytonhp/<project_url>";
break;
// etc.
}
要在我的javascript中使用相同的路径,我将以下内容放在每个html文件的顶部:
<script type="text/javascript">
siteUrl = '<?= base_url();?>';
</script>
<script type="text/javascript" src="<?= base_url();?>public/scripts/external/jquery/jquery.js"></script>
<!-- Local functionality -->
<script type="text/javascript" src="<?= base_url();?>public/scripts/common.js"></script>
<!-- etc -->
然后,我的jquery ajax调用看起来像这样:
$.ajax({
type: "POST",
url: siteUrl + "index.php/ajax_controller/getSomeData",
dataType: "json",
data: "id=5",
success: successCallback,
error: errorCallback
});
答案 1 :(得分:0)
只需使用Web服务器(IIS内置于Windows中,或者使用Apache,否则使用XAMP)。这样,您就可以始终连接到您的网站(使用http://localhost/..。)。
答案 2 :(得分:0)
快速解决方案是运行本地Web服务器。出于各种原因,这是一个好主意。
如果您不想这样做,只需定义URL以从全局某处获取JSON,并将其传递给getJSON()。在将代码放到服务器上之前,不要忘记将其重新设置。
答案 3 :(得分:0)
我使用了本地sinatra网络服务器,并替换了/ etc / hosts文件中的主机。这很好,因为定义新服务非常容易。
我经常忘记重置我的hosts文件,这会导致很多挫折,所以我创建了一个脚本来包装整个文件。
以下是一个提供Twitter用户Feed的示例。
<强> run.sh 强>
#!/bin/bash
cp /etc/hosts /etc/hosts.original
cat offline_hosts >> /etc/hosts
ruby server.rb -p 80
cp /etc/hosts.original /etc/hosts
<强> offline_hosts 强>
127.0.0.1 twitter.com
<强> server.rb 强>
#!/usr/bin/ruby
require 'sinatra'
# twitter user
# http://twitter.com/status/user_timeline/$USER.json&callback=?
get '/status/user_timeline/:username.json', :host_name => /twitter\.com/ do
render_file "feeds/#{params[:username]}.json"
end
def render_file filename
output = File.open(filename).read
output = "#{params[:callback]}(#{output});" if params[:callback]
output
end