9

ここのローカル サーバーでホストされている JSON を取得しようとしていますが、何らかの理由で機能しません。ブラウザで自分の URL にアクセスすると、Json が正しく返されます。別の URL を使用すると、データが取得されます。

私の元の getJson メソッド:

getJson:

$.getJSON(url, 

                    function(data) {
                        console.log('got something'); 
                        alert(data);    

                    });

今、私は何が間違っているのかを正確に見たいと思っています。私はそれを Ajax リクエストとして書き直しました。私のエラー コールバックで jqxhr は、私が理解できない多くのことを教えてくれます。このエラーの詳細を取得できますか?

TextStatus値は"error"

errorThrownnull

    $.ajax({
                  url: url,
                  dataType: 'json',
                  success:  function(data) {
                        console.log('got something'); 
                        alert(data);    
                        },
                error: function(jqxhr,textStatus,errorThrown)
                    {
                        console.log(jqxhr);
                            console.log(textStatus);
                            console.log(errorThrown);                               

                            for (key in jqxhr)
                                alert(key + ":" + jqxhr[key])                                                                 
                            for (key2 in textStatus)
                                alert(key + ":" + textStatus[key])
                            for (key3 in errorThrown)
                                alert(key + ":" + errorThrown[key])

                   //<--- All those logs/alerts, don't say anything helpful, how can I understand what error is going on? ---->

                }});

最後に、返されることになっているjsonは

[{"message": "login failed"}]

また、これは Phonegap を使用して開発されたモバイル アプリであるため、firebug、chrome コンソール、またはその他の開発ツールを使用できません。

4

2 に答える 2

7

コメントを回答フォームに入れます。これは問題の解決策ではありませんが、jQuery Ajax で返されるさまざまな問題をトラブルシューティングする良い方法です。

この場合、特定のデータ型を要求しているときはdataType: 'json'、特定の型のデータを要求しています。その特定の dataType が返されない場合は、エラー関数に渡されます。

エラー メッセージが問題を説明する情報を提供していない場合は、よりわかりやすい dataType を要求してみてください。このようにして、リクエストが実際に何を返しているかを確認できます。要求された dataType 以外のデータの場合、それが問題であり、そこから解決できます。

dataType like htmlortextは、要求された URL から返された正確なデータを提供するために非常にオープンであり、そこから問題を解決できます。

それが少し役立つことを願っています。

于 2012-12-06T12:31:52.783 に答える
1

jqxhr - XrayWrapper
textStatus - Https 応答ステータス (成功、エラーなど) のテキスト表現を表します
errorThrown - XMLHttpRequest

jqxhr.status - 200、404、500 などの HTTP 応答コードを提供します。

このコード スニペットを使用して、json オブジェクトのすべてのキーを出力します。

var output = '';
for (property in object) {
  output += property + ': ' + object[property]+'; ';
}
console.log(output);
于 2012-12-06T12:25:25.663 に答える