2

xajax を使用して ajax リクエストを作成中に問題が発生しました。問題は、完全に必要でない限り、サーバーでセッションを開始したくないということです。xajax呼び出しの場合、セッションが存在しないとレスポンスが送れないので、強制的に起動させています。

したがって、サーバー側にこの機能がある場合、ユーザーがクライアント側から呼び出しを行った瞬間にセッションが開始されないと仮定します。

function example() {
    $response = new XajaxResponse();
    $response->script("alert('hello')");
    return $response;
}

エラーが発生します。Chrome や Explorer ではエラーを追跡できませんが、firefox ではライブラリのコアでキャッチされていないオブジェクトの例外が発生します。戻る前にセッションを開始すると、「機能します」:

function example() {
    session_start();
    $response = new XajaxResponse();  
    $response->script("alert('hello')");
    return $response;
}

部分的に機能するため、「機能する」と言います。Firefox では ajax 呼び出しは完全に行われますが、chrome/ie では 2 つの呼び出しを行う必要があります。最初は何も起こらず、2 回目は問題ありません。

私が今考えることができる唯一の解決策は、非常に汚いものです。セッションを開始するには、xajax 関数を作成する必要があります。

function startSession () {
     session_start();
}

そして、クライアント側から次のように 2 つの呼び出しを行います。

xajax_startSession(); xajax_example();

このアプローチで、私はchrome/ieでの「最初の実行」の問題を解決しますが、すべてのxajax呼び出しに余分な呼び出しを追加する必要があるのは非常に悪い考えです:(

ご協力ありがとうございました

4

2 に答える 2

2

そして、あなたは同じアクションを行うことができます

$response->alert('hello');

それ以外の

$response->script("alert('hello')");

幸運を

于 2012-11-08T23:35:06.713 に答える
1

その場で書いたのでない限り、あなたのコードは間違っています

function example() {
    session_start();  
    $response->script("alert('hello')");
    $response = new XajaxResponse();
    return $response;
}

2 つの回線を切り替える必要があります

    $response->script("alert('hello')");
    $response = new XajaxResponse();

あなたの実際の質問に関しては、 ajax 呼び出し中にセッションを作成する (php-xajax)の繰り返しのようです

于 2012-10-16T14:15:28.683 に答える