所以问题来了:
尝试使用.ajax进行ajax调用。但是,有些地方出现了问题,因为我的控制器没有重定向到好的视图文件,并且我的页面上没有显示任何内容。
以下是ajax调用发生的位置
$('#validate').on('click',function(){
var data = []; // data container
// collect all the checked checkboxes and their associated attributes
$("table#subsection_table input[type='checkbox']:checked").each(function(){
data.push({
subsectionid : $(this).val(),
sectionid : $(this).data('sectionid'),
year : $(this).data('year')
})
});
// JSON it so that it can be passed via Ajax call to a php page
var data = JSON.stringify(data);
$.ajax({
url : "<?php echo Yii::app()->createAbsoluteUrl("scheduler/AjaxExample"); ?>",
type: "POST",
data : "myData=" + data,
success : function()
{
alert("in success");
$("#ajax-results").html(data);
$("#ajax-results").dialog({ width: 500, height: 500})
},
error: function()
{
alert("there was an error")
}
})
console.log(JSON.stringify(data));
$('#dialog').html(data).dialog({ width: 500, heigh: 500});
});
现在这是我的控制器代码:
public function actionAjaxExample()
{
$post_data = $_POST['myData'];
$this->renderPartial('_ajax', array(
'data'=> $post_data,
)
);
}
尝试重定向到_ajax视图文件:
<?php
echo '<script language="javascript">';
echo 'alert("message successfully sent")';
echo '</script>';
echo "HI FROM BACKEND! here's what you gave to PHP: <br>";
print_r($data);
?>
所以我显然做错了什么,但是。。。我似乎找不到哪里,因为ajax调用确实发生了(至少在我的#validate-on-click事件中)。然而,最后一个视图文件并没有显示它的警告框或"来自后端的你好"。
尝试:删除var data = JSON.stringify(data);
更改
data:{myData:data},
我认为问题出在url的引号上。请检查控制台中是否出现JavaScript错误。如果您遇到一些错误,请更改此
$.ajax({
url : "<?php echo Yii::app()->createAbsoluteUrl("scheduler/AjaxExample"); ?>",
type: "POST",
至
$.ajax({
url : '<?php echo Yii::app()->createAbsoluteUrl("scheduler/AjaxExample"); ?>',
type: "POST",
如果没有得到任何错误,请检查控制台中的xHr选项卡,网址是什么,您的ajax正在命中。如果有任何问题,请告诉我