Reputation: 6629
Am trying to perform an ajax get to a yii2 controller but the link fails to pass correctly
This is what i have tried:
$.ajax({
url: '<?php echo Yii::$app->request->baseUrl. "/checks/items" ?>', //this fails
type: 'get',
data: {
category:category,
_csrf : '<?=Yii::$app->request->getCsrfToken()?>'
},
success: function (data) {
var parsedResult = $.parseJSON(data);
.....
$("#labels_trackcenter").html(html);
}
});
How do i pass that url
These are the config url rules:
'urlManager' => [
'class' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
],
Upvotes: 0
Views: 2523
Reputation: 193
incase of External Js
Specify Url in the form
<form action="<?php echo Url::toRoute('participant-prod/pull-live-data'); ?>" method="get" id="pull-part-data-form">
Call Url in the JS file
$("#pull-part-data-form").submit((e) => {
e.preventDefault();
let targetUrl = $("#pull-part-data-form").attr('action');
$.ajax({
url: targetUrl,
method: 'get',
data: $("#pull-part-data-form").serializeArray(),
success: function (response) {
},
error: function (error) {
console.error(error)
}
});
})
Upvotes: 0
Reputation: 922
Can you use Url helper class, it will change your url based on url rules which is configured in web.php file.
$.ajax({
//use Url helper class for ajax url
url: "<?= yii\helpers\Url::to(['@web/checks/items'],true) ?>",
type: 'get',
data: {
category:category,
_csrf : "<?=Yii::$app->request->getCsrfToken()?>"
},
success: function (data) {
var parsedResult = $.parseJSON(data);
.....
$("#labels_trackcenter").html(html);
}
});
Upvotes: 1
Reputation: 1092
You can try this,take care of concatenation.
$this->registerJs("
$.ajax({
url: '" . yii\helpers\Url::to(["/checks/items"]) . "',
//OR
url: '" . Yii::$app->urlManager->baseUrl."/checks/items',
type: get,
data: {
category:category,
_csrf : '" . Yii::$app->request->getCsrfToken() . "'
},
success: function (data) {
var parsedResult = $.parseJSON(data);
.....
$("#labels_trackcenter").html(html);
}
});
");
Upvotes: 2
Reputation: 696
You can use
Url::toRoute
$.ajax({
url: '<?php echo Url::toRoute('checks/items'); ?>',
type: 'get',
data: {
category:category,
_csrf : '<?=Yii::$app->request->getCsrfToken()?>'
},
success: function (data) {
var parsedResult = $.parseJSON(data);
.....
$("#labels_trackcenter").html(html);
}
});
Upvotes: 1