2011-07-09 9 views
1

私はCodeIgniter https://github.com/philsturgeon/codeigniter-restserverのPhil SturgeonのRESTfulインターフェイスを使用していますが、問題なく動作しているようです。jquery .getJSONはCodeIgniter RESTインターフェイスからデータを取得しません

別のサーバーで、私はjsonデータを取得するためにjQueryを使用しようとしています。

まず、jQueryのドキュメントでflickrの例を使用してjsが乱れているかどうかを確認しました。それは適切に働いた。

私が私のURLに代わるとき、私は何の反応も出ていないようです。

  $.getJSON("http://myurl/apps/api/micronews/community/db/mydb/city/mycity/format/json/?jsoncallback=?", 
      function(data) { 
      console.log ('show me the data'); 
      }); 

私も試してみた同等のAJAXリクエスト:

$.ajax({ 
    url: "http://myurl/apps/api/micronews/community/db/mydb/city/mycity/format/json/", 
    dataType: 'jsonp', 
    success: function(results){ 
    console.log(results); 
    } 
}); 

外部サーバ上のアクセスログは、/アプリケーション/ API /のMicronews /コミュニティ/ DB/mydbという/都市にGETリクエストを示してい/ mycity/format/json /?callback = jQuery151029825189273083685_1310236439746 & _ = 1310236439748と200応答。

ブラウザから直接このページにアクセスすると、jsonエンコードされたデータが返されます。

GETパラメータはURL文字列内にあるため、CodeIgniterが正しく設定されていないと問題ではありません。アクセスログは、GET要求が正常であることを示唆しているようです。

答えて

0

これは使用してみてください:

$.getJSON("http://myurl/apps/api/micronews/community/db/mydb/city/mycity/format/json/?callback=?", 
    function(data) { 
    console.log ('ready to handle data'); 
    }); 
+0

サイレントモードでエラーが発生しているようです。おそらくそれはjson形式です。 Flickrが返すものは次のとおりです。http://api.flickr.com/services/feeds/photos_public.gne?tag=cat&format=json&jsoncallback=? Sturgeonのインターフェイスは、[{"" id ":" 2670 "、" case_no ":" 012011071146 "、" date ":" 20110509 "}を返す – wmfox3

+0

ああ。 CodeIgniterでは、実際には非常に興味深い問題が発生しています。デフォルトでは、CIはすべてのGETパラメータを破棄します。これを動作させるには、CI構成ファイルのクエリー文字列を再度有効にする必要があります( '$ this-> get()'は実際に何かを返します)。 – Femi

+0

スイッチング$ config ['uri_protocol'] = 'QUERY_STRING'; CodeIgniterはエラーを返します。最高でも、Firebugコンソールは200 OKで赤でGETコールを表示しますが、応答には何も表示されません。だから私はCodeIgniterがどのように要求を処理しているかに問題があると考えています。 – wmfox3

0

なぜだけではなく$.ajax()を使用して、あなたがJSONPコールバックラッパーを心配するのではなく、crossDomain:trueに渡すことができますか?

+0

データなしで200の応答が得られるようです。 – wmfox3

1

私のためのソリューションの作業:application/config/config.phpで は、次の変更を行います。

$config['uri_protocol'] = "PATH_INFO"; 
$config['enable_query_strings'] = TRUE 

私の夜節約します!

1

私はセキュリティフィルタリング機能が働いたと思います。

セキュリティフィルター機能は、新しいコントローラーが呼び出されると自動的に呼び出されます。これは、次のことを行います。

$の設定[ 'allow_get_array']はFALSEです(デフォルトはTRUEである)、グローバルなGET配列を破壊した場合。

http://codeigniter.com/user_guide/libraries/input.html

ので、$config['allow_get_array'] = TRUEを試してみてくださいまたはPOSTメソッドを使用します。

関連する問題