你好***请问如何在yii2中使用ajax函数
事实上,我正在研究这个框架的产品(yii2),而不是直接使用它,但我认为这是相同的原则。我想绘制图表(chartJs或googleChart或d3 ......无论如何)所以在后端区域的索引文件中(xx / xx / xx / dashboard / index.php)我想将ajax请求发送到另一个php文件(简单和逻辑)
这个与index(xx / xx / xx / dashboard)放在同一个文件夹中,但没有任何反应! :(
我注意到如果我在框架文件夹之外测试我的两个文件(indexAjax和phpDB),我会得到一个不错的结果 但是一旦它在框架文件中,它们将不再起作用:(
我的代码如下: 1 /我的索引文件的一部分
<canvas id="mycanvas" width="400" height="400"></canvas>
<script>
$(function()
{
$.ajax({
url: "chartData.php",
type:'POST',
data:{'trigger':'trigger'},
success: function(data) {
alert(data);
console.log(data);
var idTab = [];
var resultatTab = [];
for(var i in data) {
idTab.push("data " + data[i].id);
resultatTab.push(data[i].resultat);
}
var chartdata = {
labels: idTab,
datasets : [
{
label: 'Player Score',
backgroundColor: 'deepskyblue',
borderColor: 'dodgerblue',
hoverBackgroundColor: 'orange',
hoverBorderColor: 'yellow',
data: resultatTab
}
]
};
var ctx = $("#mycanvas");
var doughnutGraph = new Chart(ctx, {
type: 'doughnut',
data: chartdata,
options:{responsive:false}
});
},
error: function(data) {
alert(JSON.stringify(data));
console.log(data);
}
});
}); // fin jQuery
</script>
2 /第二个文件(php)
<?php
if (isset($_POST['trigger']))
{
//setting header to json
header('Content-Type: application/json');
//database
define('DB_HOST', '127.0.0.1');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'lab');
//get connection
$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
if(!$mysqli){
die("Connection failed: " . $mysqli->error);
}
//query to get data from the table
$query = sprintf("SELECT * FROM score");
//execute query
$result = $mysqli->query($query);
//loop through the returned data
$data = array();
foreach ($result as $row) {
$data[] = $row;
}
//free memory associated with result
$result->close();
//close connection
$mysqli->close();
//now print the data
print json_encode($data);
}
非常感谢
答案 0 :(得分:1)
我认为你必须看看yii2中的路由是如何工作的 http://www.yiiframework.com/doc-2.0/guide-structure-overview.html 或者在这里 http://www.yiiframework.com/doc-2.0/guide-start-hello.html
你无法直接调用php文件..
例如,在javascript中:
$.get('/site/user-messages', function (data, status) {
if (status !== 'success') {
console.log('ERROR: '+ status);
return;
}
allData = JSON.parse(data);
});
此处网站是控制器,用户消息是操作 在这种情况下,在urlManager
中启用了prettyUrl模式答案 1 :(得分:1)
以适当的操作添加charData.php文件的内容,例如:inside siteController.php
public function actionChartData() {
your code
.........
return $this->render('your_related_view', [
/* your vars */
'my_var' => $my_var,
]);
}
使用
调用动作i ajax$.ajax({
url: <?php echo \yii\helpers\Url::to(['/site/chart-data']) ?>,
type:'POST',
data:{'trigger':'trigger'},
success: function(data) {
........