Kewa2008
@Kewa2008
Программист

Yii2. Как передать данные через ajax?

Всем доброго времени суток.
Разбираюсь с вопросом как передать данные из представления в контроллер при помощи ajax.
Вот что у меня получается:
В представлении есть JS код:
<?php
$js=<<<JS
	 $("#testBut").on("click", function(e) {
         $ajax({
         	url : '/analytica',
         	type : 'POST',
         	data : {dat : 'qwe', '<?= Yii::$app->request->csrfParam; ?>' : '<?= Yii::$app->request->getCsrfToken() ?>'},
         	success : function(res){
         		console.log(res);
				},
			error : function(){
				alert('Ошибка при отправке данных: перезагрузите страницу!');
			}
         })
          return false;
      })
JS;
$this->registerJs($js);
?>


В контроллере следующий код:
public function actionIndex()
    {
    	if(\Yii::$app->request->isAjax){
			return 'Запрос принят';
		}
        return $this->render('index');
    }


На просторах интернета вычитал что данные могут не отправляться из-за того, что я не передаю csrf, именно поэтому в JS добавился код
'<?= Yii::$app->request->csrfParam; ?>' : '<?= Yii::$app->request->getCsrfToken() ?>'


Но т.к. код не преобразовывается, а выводится прям так, как написан - я понимаю что где-то свернул не туда.

Буду благодарен если сможете подсказать в каком направлении дальше двигаться
  • Вопрос задан
  • 1360 просмотров
Решения вопроса 1
Kewa2008
@Kewa2008 Автор вопроса
Программист
Вопрос решился очень просто
$this->registerJs('$("#testBut").on("click", function(e) {
         $.ajax({
         	url: "'.\yii\helpers\Url::toRoute(['','id'=>$someid]).'",
         	type : "POST",
         	data : {dat : "qwe"},
         	success : function(res){
         		console.log(res);
				},
			error : function(){
				alert("Ошибка при отправке данных: перезагрузите страницу!");
			}
         })
        return false;  
      })');


Кто-нибудь сможет подсказать как можно использовать php код при формировании JS кода таким образом:

$js=<<<JS
...
JS;
$this->registerJs($js);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы