まずコードに移動します:
これはviewsite/reg.phpです
$cs = Yii::app()->getClientScript(); $cs->registerScriptFile('/js/verify-code.js',CClientScript::POS_END);
これはlayout/main.phpです
$commonValue = json_encode([ 'SmsVerifycodeUrl' => Yii::app()->createAbsoluteUrl('site/SendSmsCode'), 'WaitSecond' => WapMember::DEFAULT_INTERVAL, ]); Yii::app()->clientScript->registerScript("var commonValue = $commonValue",CClientScript::POS_END);
これはverify-code.jsファイルです
var initSecond = (typeof CommonValue.WaitSecond) == "undefined" ? 180 : CommonValue.WaitSecond, waitSecond =initSecond, SmsVerifyCode = function(btn, form) { this.getBtn = btn; this.form = form;}, SCF;
Chromeブラウザで報告されたエラーですverify-code.js:1 Uncaught ReferenceError: CommonValue is not defined
最終的に判明:
Yii::app()->clientScript->registerScript("var commonValue = $commonValue",CClientScript::POS_END);
を書く際にパラメータが抜けていることが判明しました。結果は次のようになります:
Yii::app()->clientScript->registerScript('commonValue',"var commonValue = $commonValue",CClientScript::POS_END);
CommonValue の POS_END は単に POS_HEAD に調整されます。
または、$commonValue が main.php の render('reg.php') の前に配置されていることを確認してください。2 つの registerScript が順番に配置されています
ps:
verify-code.js は、このファイル内のグローバルな変数を参照する代わりに関数やオブジェクトを返すことができますか?
私は以前にそのようなコードを保守したことがありますが、それは嫌です
上記は、Yii がビュー内で変数を作成し (PHP コードを保護)、js ファイル内で以前に作成した変数を呼び出すコード例です。PHP の関連コンテンツに注目してください。中国語のウェブサイト (www.php.cn)!