2017-02-17 60 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'); 正常註冊腳本。