1

script タグでラップされた PHP ファイル内に JS スクリプトがあり、何らかの奇妙な理由で正常に動作しています。

私は通常、AJAX を介して JS 変数を PHP に割り当てますが、間違ってこれを試してみたところ、うまくいきました。理由はありますか?

$(document.body).on("change","select[name=city]", function(){ 
    var v = $(this).val().replace("%","");
    if( v != "undefined" && v != undefined ){
    <?php $options['tax'] = v; ?>
    }
});

編集:後でクリックイベントの後、JSを介してそのphp変数を表示し、正しい値を表示します。私には意味がありません。

編集: したがって、v を php 変数に割り当てると、定数を割り当てるのと同じように、コンソール $eshopoptions['tax'] を使用して JS に出力すると、javascript 変数として解釈される 'v' がスローされます。

4

1 に答える 1

8

動いていない。php が無効です。

<?php $options['tax'] = v; ?>
                        ^---this is an undefined constant in PHP.

JS と PHP の両方にたまたま現れたからといって、それらが同じv変数であるとは限りません。そうではありません。PHP はサーバー上で実行され、javascript とは何か、またはそれを解析/実行する方法がわからないことを思い出してください。Javascript についても同様です。クライアントブラウザでJSエンジンが起動するまでにphpコードはなくなっているため、PHPが何であるかはわかりません。また、phpコードを見ることさえありません。

あなたがしているのは、未定義の定数vを に割り当てることです$options['tax']。PHP は礼儀正しく、文字列を引用符で囲むのを忘れていると想定するため、コードを次のように扱います。

<?php $options['tax'] = 'v'; ?>
                        ^-^--

このコードは実際には何も出力しないため、ブラウザーには次のように表示されます。

if (v != "undefined" && v != undefined) {
}  // <-- look ma, no php!
于 2013-04-12T22:05:07.300 に答える