Внешние данные JSON с автономной разработкой - PullRequest
0 голосов
/ 02 октября 2009

Я занимаюсь разработкой веб-приложения, которое обращается к некоторым внешним данным JSON. В настоящее время я использую jQuery getJSON, чтобы получить данные и вызвать обратный вызов.

Мой интернет дома ужасен, поэтому я регулярно не подключаюсь. Я ищу способ разработать это приложение, не подключаясь к Интернету.

Сначала я хотел установить переменную OFFLINE, которая изменяет расположение сценариев на локальный файл, но поскольку в jQuery getJSON используются функции с динамическими именами для обратных вызовов, ему потребуется некоторый интеллект сервера.

Подробнее о том, как обратные вызовы getJSON работают здесь: http://docs.jquery.com/Ajax/jQuery.getJSON

Я уверен, что есть более простой способ. Есть предложения?

** Редактировать **

Позвольте мне попытаться немного уточнить В настоящее время я использую локальный веб-сервер. Я должен - сценарий теги не могут ссылаться на локальный файл, из соображений безопасности.

В настоящее время я звоню getJSON с URL: http://twitter.com/status/user_timeline/user.json?callback=?

Если я скачал этот ответ json и разместил его на локальном веб-сервере, он не сработал бы, потому что имя обратного вызова будет меняться каждый раз, но канал будет иметь имя функции, с которой он был первоначально выбран.

Ответы [ 4 ]

1 голос
/ 02 октября 2009

У меня похожая проблема. Попробуйте xampp для простой установки php / apache / mysql на ваш компьютер.

Я использую dreamhost для размещения своего сайта. Я управляю всем с помощью репозитория subversion, который позволяет мне просто выполнить 'svn update' на моем живом сайте, когда я буду готов внести свои изменения.

Я также определяю все мои пути относительно переменной base_url, которая устанавливается в зависимости от http-хоста, поэтому мне не нужно ничего менять, чтобы мой сайт работал на разных веб-серверах. Я использую 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 -->

Тогда мои jjery ajax-вызовы выглядят так:

$.ajax({
        type: "POST",
        url: siteUrl + "index.php/ajax_controller/getSomeData",
        dataType: "json",
        data: "id=5",
        success: successCallback,
        error: errorCallback
   });
0 голосов
/ 13 ноября 2010

Я использовал локальный веб-сервер sinatra и заменил хосты в моем файле / etc / hosts. Это приятно, потому что очень легко определить новые услуги.

Я часто забываю сбросить файл hosts, что может вызвать большое разочарование, поэтому я создал сценарий, чтобы обернуть все это.

Вот пример, который будет обслуживать твиттер пользователя.

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
0 голосов
/ 02 октября 2009

Быстрое решение - просто запустить локальный веб-сервер. Это хорошая идея по разным причинам.

Если вы не хотите этого делать, просто определите URL-адрес, чтобы получить JSON откуда-то глобально, и передайте его getJSON (). Только не забудьте установить его обратно, прежде чем разместить свой код на сервере.

0 голосов
/ 02 октября 2009

Просто используйте веб-сервер (IIS встроен в Windows, или используйте Apache или XAMP в противном случае). Таким образом, вы всегда подключены к своему веб-сайту (используйте http://localhost/...).

...