Yii ajax 问题
Yii ajax issues
我之前创建了一个 ,我想在其中了解 Yii 中 ajax 的工作原理。所以,我正在尝试实施一个答案。
我创建了控制器并放入了控制器目录:
<?php
class AjaxController extends CController
{
public function actionDoThing()
{
// Get request object
$request = Yii::app()->request;
// Check if request is acceptable
if ($request->isPost && $request->isAjaxRequest)
{
echo CJSON::encode(array('hello'=>'world'));
}
// else
// {
// throw new CHttpException(403);
// }
}
}
?>
我也看到了这个带有脚本的片段。
<script>
$(document).on('click','div.lessonDiv', function() {
$.ajax({
type: "POST",
url: <?php /*Also I tried just DoThing instead of actionDoThing, this doesn't work*/echo $this->createUrl('AjaxController/actionDoThing'); ?>,
success: function(data, textStatus, jqXHR)
{
console.log(data);
}
});
});
</script>
不知道出了什么问题,但控制台显示:
Uncaught SyntaxError: Invalid flags supplied to RegExp constructor 'actionDoThing'
我现在哪里错了?
您似乎忘记了 URL:
周围的引号
$.ajax({
type: "POST",
url: "<?php echo $this->createUrl('AjaxController/actionDoThing'); ?>",
success: function(data, textStatus, jqXHR) {
console.log(data);
}
});
首先
将Js代码包裹在里面
$(function{
// your code here
});
所以你的代码看起来像
$(function(){
$(document).on('click','div.lessonDiv', function() {
$.ajax({
type: "POST",
url: "<?php echo $this->createUrl('AjaxController/actionDoThing'); ?>",
success: function(data, textStatus, jqXHR)
{
console.log(data);
}
});
});
});
第二件事:
将AjaxController/actionDoThing改为ajax/doThing
所以你的最终代码会像
$(function(){
$(document).on('click','div.lessonDiv', function() {
$.ajax({
type: "POST",
url: "<?php echo $this->createUrl('ajax/doThing'); ?>",
success: function(data, textStatus, jqXHR)
{
console.log(data);
}
});
});
});
我之前创建了一个
<?php
class AjaxController extends CController
{
public function actionDoThing()
{
// Get request object
$request = Yii::app()->request;
// Check if request is acceptable
if ($request->isPost && $request->isAjaxRequest)
{
echo CJSON::encode(array('hello'=>'world'));
}
// else
// {
// throw new CHttpException(403);
// }
}
}
?>
我也看到了这个带有脚本的片段。
<script>
$(document).on('click','div.lessonDiv', function() {
$.ajax({
type: "POST",
url: <?php /*Also I tried just DoThing instead of actionDoThing, this doesn't work*/echo $this->createUrl('AjaxController/actionDoThing'); ?>,
success: function(data, textStatus, jqXHR)
{
console.log(data);
}
});
});
</script>
不知道出了什么问题,但控制台显示:
Uncaught SyntaxError: Invalid flags supplied to RegExp constructor 'actionDoThing'
我现在哪里错了?
您似乎忘记了 URL:
周围的引号$.ajax({
type: "POST",
url: "<?php echo $this->createUrl('AjaxController/actionDoThing'); ?>",
success: function(data, textStatus, jqXHR) {
console.log(data);
}
});
首先
将Js代码包裹在里面
$(function{
// your code here
});
所以你的代码看起来像
$(function(){
$(document).on('click','div.lessonDiv', function() {
$.ajax({
type: "POST",
url: "<?php echo $this->createUrl('AjaxController/actionDoThing'); ?>",
success: function(data, textStatus, jqXHR)
{
console.log(data);
}
});
});
});
第二件事:
将AjaxController/actionDoThing改为ajax/doThing
所以你的最终代码会像
$(function(){
$(document).on('click','div.lessonDiv', function() {
$.ajax({
type: "POST",
url: "<?php echo $this->createUrl('ajax/doThing'); ?>",
success: function(data, textStatus, jqXHR)
{
console.log(data);
}
});
});
});