2011-07-12 8 views
2

私は作成中のAPIからJSONを取得するためにファイル内のgetJSON関数を使用していますが、何らかの理由でgetJSONが常にエラーハンドラに入ります。 javascriptのコードはここにあります。これは常に.error関数に入ります。jQuery getJSONがエラーをスローしていますか?

window.onload = function() 
      { 
       var data = "store_id=5"; 
       $.getJSON('http://localhost:81/javascript_plugin/get_store_items', data, 
       function(json) { 
        alert(json); 
       }) 
       .success(function() { alert("second success"); }) 
       .error(function() { alert("error"); }) 
       .complete(function() { alert("complete"); }); 
      } 

私はapi側のものにCakePHPを使用しています。返されるファイルは以下のとおりです。 $ content_for_layoutには、 "echo $ js-> object($ json);を呼び出して作成されたJSONオブジェクトが含まれています。 javascriptエンジンとしてjQueryを使用しています。 $ jsonはCakePHP find呼び出しの結果です。

<?php 
     header("Pragma: no-cache"); 
     header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate"); 
     header('Content-Type: text/x-json'); 
     header("X-JSON: ".$content_for_layout); 
     echo $content_for_layout; 
    ?> 

応答コードが200で、ヘッダに表示されているものがすべて含まれていますが、応答タブは空です。どんな助けもありがとう。

おかげ

+2

content-typeを使用してみましたか?application/json?これはjsonの標準的なコンテンツタイプです。 – scrappedcola

+1

PHPファイルが何も返されない場合、getJSONはエラーをスローします(そこにはJSONがないため) – thedaian

+1

'$ content_for_layout'が確実に設定されていますか? –

答えて

1

私の問題は、私のWebサーバにクライアント側のhtmlファイルを移動し、そこからそれを実行することで解決しました。 'file://' htmlファイルを実行すると、このタイプのサーバー呼び出しは許可されないようです。現在、すべてのバージョンのjQueryがすべてのブラウザと同様に動作します。

+0

ローカルでテストするときは、常に何らかの種類のWebサーバーwebrick、mampなどを使用する必要があります。これは、http要求ではなくファイルシステムに要求を行うためのブラウザの制限が原因です。 –

関連する問題