3

私のアプリケーションはサインインの背後にあるため、ajax を介してデータをロードするときに、ユーザーがまだアクティブなセッションを持っていることを確認する必要があります。echo json_encode(array('TIMEOUT'));ユーザーがアクティブなセッションを持っていない場合は、 which outputsを返します["TIMEOUT"]。その応答を読んで、ユーザーをサインイン ページに戻すにはどうすればよいですか?

以前のバージョンの DataTables では、次のことができました。

"fnServerData": function ( sSource, aoData, fnCallback, result ) {
                            $.getJSON( sSource, aoData, function (json) { 
                              if(json == "TIMEOUT")
                              {
                                window.top.location.href = "/sign_out?action=to";
                                return;
                              }

                              fnCallback(json)
                            } );

DataTables 1.10 では、( docsおよびajax.datafnServerDataを参照)に置き換えられました。新しい DataTables バージョンで同じことを達成するにはどうすればよいですか? 私は近づいているように感じますが、それは機能していません...応答を解析しようとして何か間違ったことをしている可能性があります(ifステートメント内でヒットしたことはありません)。ajax

"ajax": {
        "url": "/account/location_load",
        "data": function (myJson) { 
            if(myJson == "TIMEOUT")
            {
              window.top.location.href = "/sign_out?action=to";
              return;
            }

            return myJson;
          }
      }
4

1 に答える 1

4

1日半の作業の後、最終的にajax.dataSrcdoc)を使用して実用的なソリューションを見つけました

"ajax": {
        "url": "/account/location_load",
        "dataSrc": function (myJson) {

            if(myJson == "TIMEOUT")
            { 
              window.top.location.href = "/sign_out?action=to";
              return "";
            }

            return myJson.data;
          }

このバージョンでは myJson を読み取れるのに、他のバージョンでは読み取れなかった理由はわかりませんが、機能します。動作するPHPコードは最終的にecho json_encode('TIMEOUT');

于 2015-02-19T15:18:56.677 に答える