2017-02-17 58 views
1

我正在使用框架(yii2),我在视图中添加了一个jQuery代码。像这样:MVC内部的jQuery代码

$js = '$(document).ready(function(){ 
     $("#showmap").click(function(event){ 
      ..... 
      function success(position) { 
      ... 
      $.ajax({ 
       url : "../frontend/web/getContent.php", 
       type: "POST", 
       data: {success : "success", latitude : latitude, longitude : longitude}, 
       success: function (data){ 
        var jsonmap = JSON.parse(data); 
        var address = jsonmap["results"]["0"]["formatted_address"]; 

        $("#StreetName").val(address); 
       } 
      }); 
      } 
     }); 
    }); 
'; 

$this->registerJs($js); 

我在web目录中有文件“getContent.php”。哪里是放置文件的正确位置?执行此代码的最佳方法是什么? 一切都很好,但我不知道这是否是最好的方法。

回答

1

这没关系,因为它指出了Yii documentation

刚: - 你不需要内$(文件)。就绪关闭你的代码,因为Yii中会做到这一点的为默认值。 - 作为最佳做法,我建议您为您的代码块添加一个名称,以便您可以重复使用它。 - 作为最佳实践永远是最好把你的代码在外部文件,所以你可以重复使用它,并把它添加到捆绑了被连接起来并minfied

请查看文档的链接我上文所指出,在部分注册内嵌脚本这是在哪里解释。

+0

而_getContent.php_什么是正确的地方把它和使用的URL? –

+1

@ Juan.Queiroz哈哈,对不起......我不这么认为......最好把这个函数放在一个动作里面,所以你可以把它称为base-url/controller/action ...我不' t建议你这样做。 –

1

正如除了较大的js和也CSS代码被接受的评论我一直期运用此格式

$script=<<<EOF 
// my code 
EOF; 

有了这个,我可以使用"' JS代码里面也容易使用的PHP变量例如包括$ url。

我只需要记住要转义所有其他字符串,这些字符串将被识别为php变量但不是。为了逃避,只需添加\ before the $就像\$no_php_variable

然后我使用 $this->registerJs($script, View::POS_READY,'my-button-handler'); 正常注册脚本。