@EVOSandru6

Как в yii сформировать url в ajax?

Добрый день,

Такая проблема, не получается получить данные в

actionaddToCart($code, $count){
      ...
}


Ajax такой:
$.ajax({
                data: { code: product_code, count: qty },
                type: 'GET',
                url: '/cart/addToCart',
                success: function(msg){
                    alert( "Прибыли данные: " + msg );
                },
                error: function(){
                    alert('error!');
                }
            })


Если в actionaddToCart пишу просто

методом get без data

echo 123;

Оно алертится.

Меня интересует 2 момента:

1. как сформировать 2 параметра в ajax:

data и url,

Чтобы в actionaddToCart методом Get улетели данные?

2. Пробовал так еще:

AJAX

$.ajax({
                data: { code: product_code, count: qty },
                type: 'POST',
                url: '/cart/addToCart',
                success: function(msg){
                    alert( "Прибыли данные: " + msg );
                },
                error: function(){
                    alert('error!');
                }
            })


PHP
actionaddToCart (){
if(!empty($_POST['code']) && !empty($_POST['count'])){
            echo 'Привет!';
}
}


Возвращается в консолиPOST website/cart/addToCart 400 (Bad Request). Помогите советом, как данные в action принять?
  • Вопрос задан
  • 975 просмотров
Пригласить эксперта
Ответы на вопрос 4
fornit1917
@fornit1917
yii2? Если да, то там в пост-запросах проверка CSRF-токена идет.
Либо в контроллере пропишите public $enableCsrfValidation=false (но это не очень хорошо, т.к. добавляет уязвимостей). Либо руками в яваскрипте добавляйте в параметры аякс запроса (data) параметр с csrf-токеном:

var csrfToken = $('meta[name="csrf-token"]').attr("content");
$.ajax({
         .....
         data: {param1: param1, _csrf : csrfToken},
});
Ответ написан
@Nc_Soft
Yii не умеет без пляски с бубном пост параметры принимать как аргументы экшена. Поэтому уберите аргументы у function actionAddToCart()
Ответ написан
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Я делаю так в yii2:

$('#user-profile').on('beforeSubmit', function(){
    var url = $('#user-profile').attr('action');
    var data = $('#user-profile').serialize();
    $.ajax({
    	type: "POST",
      	url: url,
      	data: data,
      	success:function(data) {
      		if (typeof(data)!='undefined' && data !='') {
      			alert(data);
      		}	
      	}
    });
});


ну В вашем случае надо заменить селекторы на свои и метод get, а не post
Ответ написан
Комментировать
Можно использовать хедпер Url
<?php
use yii\helpers\Url;
?>
<script>
var url = <?= Url::to(['coroller/action', 'get_param' => 100]); ?>
...
// Сам аякс запрос
</script>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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