2013-02-05 14 views
12

私はこのurlコールを持っています。予想通りurlはJSONオブジェクトを返します(直接ブラウザの呼び出し)が、私は次の行でアヤックス{"readyState":4、 "status":200、 "statusText": "success"}のエラーコールバック

$.ajax({ 
     url: url, 
     type: "GET", 
     dataType:"jsonp", 
     success: function(data) { 
      alert(data); 
     }, 
     error : function(error) { 
      alert("no good "+JSON.stringify(error)); 
     } 
}); 

を経由して、それは、私がstackoverflowの上の他の同様の質問があります知っている私に

no good {"readyState":4,"status":200,"statusText":"success"} 

を返すことを行うとき誰もそれを解決していないようだ。

+0

あなたは応答データを検証しましたか? –

+2

しかし、 'url'とは何ですか? –

+1

jsonを返した場合、dataTypeはjsonpでなくjsonpでなければなりません – Musa

答えて

32

これは、HTTP要求が成功したが、データを解析しようとする試みが成功しなかったことを示しています。

つまり、データはJSONPとしてフォーマットされていませんでした。

+0

ブルズアイ!だから、それを見つけるのは簡単なことです。もしajaxがエラーメッセージでそれを言うことができるのであれば...それは典型的な "プログラマーのこと"です... – Christian

+0

JSコンソールはおそらくより有用なエラーメッセージを持っていました...しかしJSONPは恐ろしいです最初はハックしました(ありがたいことにCORSがありますので、JSONPをこれ以上使用する必要はありません)。 – Quentin

4

これらの変更は私の問題を解決しました。 4、 "ステータス":200、「STATUSTEXT

//サーバ側

echo $_GET['callback'] . '('.json_encode($data_to_encode).')'; 

// JS

$.ajax({ 
     url: url+"?callback=?", 
     type: "GET", 
     dataType:"jsonp", 
     success: function(data) { 
      alert(data); 
     }, 
     error : function(error) { 
      alert("no good "+JSON.stringify(error)); 
     } 
}); 
+0

これがあなたのサーバーなら、なぜJSONPとしてレスポンスを送信していますか?サーバーは別のドメインからホスティングしていますか? –

+0

はい。サーバーは異なるドメインのホストです。それは "api"ドメインで、javascriptはモバイルアプリの一部です。 –

+0

しかしそれはちょうど異なるサブドメインですか?つまり、「api.example.com」対「www.example.com」ですか?もしそうなら、JSONPを避けることができます。 –

1

は、私はちょうど正確に同じ問題が、{ "のreadyState" を持っていました":" success "}

私のPHPスクリプトでエコー" hello "を削除するのを忘れていたためでした。私が前にテストの理由で作ったstatmentなので、私のPHPスクリプトがJSONと一緒に文字列を送っていたかもしれません。それは私の愚かな誤りかもしれません。

+0

これはこれではありません私のための問題。私の答えで説明したように –

関連する問題