0

このコードに問題があります

var MAIN_LOCATION = "http://www.bosscaffe.com/new/";
$("#gallery_page").click(function() {
    $('#gallery_photos').show();
    getPhotos();
    return false;
}); 

function getPhotos()
{
    $.ajax({
         type: "GET",
         url: MAIN_LOCATION + "classes/getEnterijerPhotos.php?lang="+LANG,
         success: function(msg){
            if (msg != 'nothing')
            {
                $('#photo_wrapper').empty();
                $('#photo_wrapper').append(msg);
            }
         }
    });
}

クロスドメインのようないくつかのことを試しました:true、async:falseなど... POSTに切り替えようとしましたが、何らかの理由で、新しいタブで呼び出しを開始しても何も返されず、結果が得られますhttp:// www.bosscaffe.com/new/classes/getEnterijerPhotos.php?lang=enしたがって、これらの画像はすべて準備されています。ローカル インスタンスではこれは機能しますが、サーバーではまったく機能しません。Chrome ではステータス = キャンセルされます。これについての考えは?

いずれにせよ、最終的な解決策はJSONに転送することですが、そのような機能が同じドメインで機能しないという奇妙なことです。

4

2 に答える 2

1

クロス オリジンコールを発信していますか? MAIN_LOCATION=> は、 (同じプロトコル、同じドメイン、同じポート) と同じ呼び出しページのオリジンです。

MAIN_LOCATION = 'http://www.bosscaffe.com/new/classes/getEnterijerPhotos.php?lang=en'そのため、呼び出し元のページを開始する必要がある場合は、http://www.bosscaffe.com/...

それがクロスオリジンコールであり、それを修正したい場合(同じオリジンに移動せずに)、その問題に関する回答をここに投稿しました

于 2012-09-11T15:23:51.467 に答える
0

質問に答えるのに十分な情報を提供していませんが、考慮すべき点がいくつかあります。

ギャラリーに余分な 'l' (el) がある最初の行にタイプミスがあります。

前述のように、応答が特定のデータ型であると予想される場合は、コードが結果を適切に準備できるように、それを $.ajax() の引数にリストする必要があります。

また、通常は、すべての AJAX 要求にエラー ハンドラーを提供して、要求が実際に成功したことを確認することをお勧めします。コードでは、事実を示すことなく、リクエストが (「黙って」) 失敗する可能性があります。

編集

PHP サーバー プロセスを実行しているホストと同じホストからリクエストを送信する場合は、URL に「localhost」ではなく、サーバーの完全修飾ホスト名を使用する必要があると思われます。

于 2012-09-11T14:56:03.423 に答える