JS

2016-12-08 12 views
-1

にvarを書き込むには、$ .ajax()。responseTextを使用してください。問題に関して多くの質問があっても、適切な答えを見つけることができませんでした。JS

外部JSでは、セッション変数(view_mode)の値が必要です。可能な値は2つあります( "複雑" & "シンプル")。結果に応じて、どの値が設定されているのか、それ以上のものをチェックしたい。

次のコードを使用して、JSは正しい値(「複合」と言うことができます)をいくつかのスペース(「複雑」など)で警告します。 if(...)になると 'if(view == "complex")'と書いても 'view'変数を使うことはできません。変数 'view'が存在しないか、他の値を持つように、常に 'else'にジャンプします。

var view = $.ajax({ 
        type: 'GET', 
        async: false, 
        url: 'get_view_mode.php', 
       }).responseText; 
alert(view); 

if(view == "complex"){ 
    //do something 
}else{ 
    //do something else 
} 

"complex"が変数に書き込まれている場合は、明らかに正しいテキストを警告することができません。しかし、なぜ他の方法でそれを使用することができないのですか? (はい、私はajaxが非同期で使用されると考えられていることを知っています))

ご協力いただきありがとうございます。ありがとう!

+0

データ型によっては、値を正しく評価する前に値を解析または解析する必要があります。 – Lain

+0

'' complex ''とそれに類するものは' 'complex''に等しくないので。前者にはスペースがあり、後者にはスペースがありません。比較を行う前に空白を取り除いてください。おそらく、 '.trim()'と(必要なブラウザのサポートによって)。あるいは、 'indexOf'を使用してください。大文字に注意してください。 –

+0

@Lain私が提供したリンクのJQueryに関するあなたのコメントについて:あなたが参照しているパスは、Ajax呼び出しによって返された全体的なオブジェクトを参照していません。それはコールバック関数に渡されるXHRラッパーオブジェクトです。 $ .ajax呼び出しは、ドキュメントとしてJferery Deferredを返します。示す。 –

答えて

0

あなたはそれはあなたが期待していない何も出力していないことを確認するためにあなたのPHPファイルをチェックする必要があります(例えば。スペース)

しかし、この場合には、あなたはif(view.match(/complex/))で逃げることができます。一般的に

、しかし、私はあなたの<head>にこのような何かを示唆している:

<script> 
    window.SESSION = <?php 
     echo json_encode(array(
      "view_mode" => $_SESSION['view_mode'], 
      // add more values here? 
     )); 
    ?> 
</script> 

この方法は、あなたがに余分なラウンドトリップを行うことなく、window.SESSION.view_modeとJSに値を直接アクセスすることができますサーバ。

+0

ありがとう!これはこれまで私にとって完璧な解決策であるようです。それは他の方法ラウンドで行うことも可能ですか?スクリプト内の変数を変更しますか? – Maki