0

URL から受け取った次の JSON があります。ここでは URL を呼び出します。www.blabla.com/testjson

そして、次のように返します。

[{"Identifier":1,"Naam":"NOT Given","Adres":"Kopenhagen 9","Postcode":"0000LL","Plaats":"NOT Given","Longitude":"0.00000","Latitude":"0.00000"},
    {"Identifier":2,"Naam":"NOT Given","Adres":"NOT Given 1","Postcode":"0000LL","Plaats":"Rotterdam","Longitude":"0.00000","Latitude":"0.00000"},
    {"Identifier":3,"Naam":"NOT Given","Adres":"NOT Given 6","Postcode":"0000LL","Plaats":"Rotterdam","Longitude":"0.00000","Latitude":"0.00000"},
    {"Identifier":4,"Naam":"NOT Given","Adres":"NOT Given 1","Postcode":"0000LL","Plaats":"Den Haag","Longitude":"0.00000","Latitude":"0.00000"},
    {"Identifier":5,"Naam":"NOT Given","Adres":"NOT Given 218","Postcode":"0000LL","Plaats":"Zoetermeer","Longitude":"0.00000","Latitude":"0.00000"}
];

この JSON を取得してこの結果を返したいのですが、UNDEFINED になります。これが私のコードです。

$.each("www.blabla.com/testjson", function(index, element) {
    $('.result').append(element.Naam);
    alert(element.Naam);
});

また、ユーザーの Cookie が true であるかどうかを確認する必要があります。それ以外の場合は何も返されません。phonegap と jquery mobile を使用しているため、これは行いません。それが問題でしょうか?

4

2 に答える 2

1

コードはパラメータ文字列「www.blabla.com/testjson」の各文字をループし、「undefined」を返します。これは、element.Naam を書き込むことで、文字列の「Naam」という名前の存在しないプロパティにアクセスしようとしているためです。

ajax 呼び出しを使用して外部の json コンテンツを読み込み、解析する必要があります。

エラーの処理にも興味がある場合は、 Littmの回答のより長い代替手段を次に示します。

    $(document).ready(function()
    {
        $.ajax(
        {
            type: "GET",
            url: "data.json",
            data: "nocache=" + Math.random(),

            // dataType: "json",
            // the above requires 'application/json' as Content-Type headers
            // see 'reference A' in the footer notes
            // if you active this, please modify following code accordingly

            success: function (source, textStatus, jqXHR)
            {
                var data = jQuery.parseJSON(source);
                $.each(data, function(index, value)
                {
                    alert(index+" "+value.Naam);
                });
            },

            error: function(data)
            {
                // alert("ERROR");
            }
        });
    });

注:
1.参照 A

編集: エラーから詳細情報を取得するには、次を追加します。

$(document).ajaxError(
    function (event, jqXHR, ajaxSettings, thrownError)
    {
        console.log(event);
        console.log(jqXHR);
        console.log(ajaxSettings);
        console.log(thrownError);
    });

次に、chrome コンソールを使用します。

編集:
提供された URL をブラウザーに入力すると、ログイン ページにリダイレクトされます。
あなたの ajax コードもこの HTML ドキュメントを取得していると思います。

セッションを確認してみてください。コードに div を追加し、この新しい div 内で curl を使用して URL のコンテンツをロードできます。この div 内に json コードが表示されない限り、セッション変数は正しく機能していません。
curl がファイル コンテンツを正しく取得する場合、ajax も同様です。

編集:
ほら?問題は、json ファイルを取得しようとしている Web サービスに正しくログインすることです。

あなたの友人は正しいです。基本的にセッション情報を保持するためにCookieを使用する PHP で$_SESSION
を 正しく設定する必要があります。 正しく試してください:

session_start() ;

ajaxを使用する前に、PHPコードの先頭に。
参考文献:
- php.net session_start
- PHP セッションが JQuery Ajax で動作しない?


これは同じドメイン内でのみ機能することに注意してください:
jquery ajax がセッション cookie を送信しない理由

別のサブドメインを使用している場合は、

setcookie

参考文献: - php.net setcookie
-クロス ドメイン Cookie アクセス (またはセッション)

私の知る限り、異なるドメイン内で Cookie を設定する方法はありません。
このような状況にある場合は、ここで説明されている SimpleSAMLPHP を確認することをお勧めします: クロス ドメイン Cookie


幸運を :)

于 2012-09-27T09:39:18.733 に答える