Javascript 离线开发的外部JSON数据

Javascript 离线开发的外部JSON数据,javascript,jquery,json,offline,Javascript,Jquery,Json,Offline,我正在开发一个web应用程序,可以访问一些外部JSON数据。我目前正在使用jQuery的getJSON获取数据并调用回调 我在家上网很糟糕,所以我经常不上网。我正在寻找一种在断开互联网连接的情况下开发此应用程序的方法 我最初的想法是设置一个离线变量,将脚本的位置更改为本地文件,但由于jQuery的getJSON使用动态命名函数进行回调,因此需要一些服务器智能 有关getJSON回调如何工作的更多信息,请参见此处: 我相信有更简单的方法。有什么建议吗 **编辑** 让我试着澄清一下 我目前正在运行

我正在开发一个web应用程序,可以访问一些外部JSON数据。我目前正在使用jQuery的getJSON获取数据并调用回调

我在家上网很糟糕,所以我经常不上网。我正在寻找一种在断开互联网连接的情况下开发此应用程序的方法

我最初的想法是设置一个离线变量,将脚本的位置更改为本地文件,但由于jQuery的getJSON使用动态命名函数进行回调,因此需要一些服务器智能

有关getJSON回调如何工作的更多信息,请参见此处:

我相信有更简单的方法。有什么建议吗

**编辑**

让我试着澄清一下 我目前正在运行一个本地web服务器。我必须-出于安全原因,脚本标记不能引用本地文件

我当前正在使用url调用getJSON:


如果我下载了json响应并将其托管在本地web服务器上,它将无法工作,因为回调名称每次都会更改,但提要将具有最初获取时使用的函数名。

只需使用web服务器即可(IIS内置于Windows中,或者使用Apache或XAMP)。这样,您就可以始终连接到您的网站(使用)。

快速解决方案是只运行本地web服务器。出于各种原因,这是一个好主意


如果不想这样做,只需定义从全局某处获取JSON的URL,并将其传递给getJSON()。在将代码放到服务器上之前,请不要忘记将其设置回原位。

我也有类似的问题。尝试在您的计算机上轻松安装php/apache/mysql

我用它来主持我的网站。我使用subversion存储库管理一切,当我准备好引入更改时,它允许我在我的实时站点上简单地执行“svn更新”

我还定义了与
base\u url
变量相关的所有路径,该变量是根据http主机设置的,因此我不必更改任何内容,我的站点就可以在不同的Web服务器上运行。我使用codeigniter,我的配置文件如下所示:

switch($_SERVER['HTTP_HOST']) {

    case "claytonhp":
        $config['base_url'] = "http://claytonhp/<project_url>";
        break;  

    // etc.
}
$.ajax({
        type: "POST",
        url: siteUrl + "index.php/ajax_controller/getSomeData",
        dataType: "json",
        data: "id=5",
        success: successCallback,
        error: errorCallback
   });

我使用了本地sinatra Web服务器,并替换了/etc/hosts文件中的主机。这很好,因为定义新服务非常容易

我经常忘记重置我的主机文件,这可能会导致很多挫折,所以我创建了一个脚本来包装整个事情

下面是一个提供twitter用户提要的示例

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
离线\u主机

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
#!/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