我开发了简单的应用程序,它生成外部javascript文件以便在现场插入。使用与用户设置相关的一些数据生成的脚本。 这是我在Yii上的第一个项目。 我创建了Controller来从db获取用户数据。
public function actionScriptout($id)
{
$this->layout= '//layouts/scriptout'; //empty layout
$model=Scripts::model()->findByAttributes(array('code'=>$id));
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
else {
$params= json_decode($model->params);
$script= $model->serviceScript($params->id, $params->service);
echo $script .' '. $params->script;
}
}
更新:脚本已在 $ model-> serviceScript($ params-> id,$ params-> service)中重新出现; 我在函数返回值之前检查了调试器中的 $ script 变量,一切正常:变量包含所有脚本。
public function serviceScript($id, $text) {
$script= file_get_contents(Yii::app()->BasePath . '/../js/service.js');
$script= str_replace(array("\n", "\r"), '', $script);
$script= str_replace('##id##', $id, $script);
$out= CJSON::encode($text);
$script= str_replace('##text_rep##', $out, $script);
return $script;
}
正常情况下,生成结果
document.getElementById('##id##').innerHTML = '88 88 888';
var stype= ['google.', 'yandex.', 'vk.', 'facebook.'];
var text_rep= ##text_rep##;
window.onload= function() {
for (i=0; i<stype.length; i++) {
if (document.referrer.search(stype[i]) != -1) {
document.getElementById('##id##').innerHTML = text_rep[i];
} else {
document.getElementById('##id##').innerHTML = '88 88 888';
}
}
}
脚本可用于网址http://domen.name/index.php?r=scripts/scriptout&id=153e1edd3e2b5e6.81264252
但它仅输出此部分
document.getElementById('footer').innerHTML = '88 88 888';
var stype= ['google.', 'yandex.', 'vk.', 'facebook.'];
var text_rep= [null,"wdwdw",null,"dwd"];
window.onload= function() { for (i=0; i
正确输出所有脚本需要做什么?
答案 0 :(得分:0)
我通过添加行
来解决问题Header("content-type: application/x-javascript");
布局文件。