简单的ajax请求在yii中

时间:2014-05-03 13:22:53

标签: ajax yii

我对yii框架很新。我知道如何在核心PHP中使用ajax。我有一个输入数据需要通过ajax插入到数据库中。

这是我的HTML代码

<div id="ins-list">
    <input type="text" id="ins-text"/>
    <input type="submit" id="add-list" value="Add"/>
</div>

ajax代码:

$("#add-list").click(function(){    

var task=$("#ins-text").val();

var data1 = 'dval=' + task;
$.ajax({
        type: 'POST', 
        url: 'insertdata.php',      
        data: data1,         
        success: function (da)
        {
           alert(da);
        }
    });     

我知道这不是ajax如何在yii中工作。请帮助我了解我需要创建的文件以及ajax工作的文件夹。

我根据建议对代码进行了更改。

ajax代码:

var data1 = 'dval=' + task;
$.ajax({ 
      type: 'POST', 
      url: 'createUrl('AjaxRequest'); ?>',
      data: data1,
      success: function(msg){ 
              alert("Sucess"+msg); },
      error: function(err){   
              alert("failure"+err); } 
 });

我在SiteController中创建了一个控制器动作:

 public function actionAjaxRequest()
 {

   if(isset($_POST['dval'])
    $val1 = $_POST['dval'];

    echo "works";

    Yii::app()->end();
  }

现在当发送ajax请求时,我总是得到&#34;失败&#34;信息。我是否需要创建自己的控制器文件,而不是在SiteController中放置操作。我甚至不确定我哪里出错了。

3 个答案:

答案 0 :(得分:2)

客户端类似,但您应该使用yii ajax函数。

CHtml::ajax() - http://www.yiiframework.com/doc/api/1.1/CHtml#ajax-detail

CHtml::ajaxLink() - http://www.yiiframework.com/doc/api/1.1/CHtml#ajaxLink-detail

CHtml::ajaxButton() - http://www.yiiframework.com/doc/api/1.1/CHtml#ajaxButton-detail

这些将有助于启动ajax进程,当您确定在ajax中使用的url时,传递控制器和要使用的操作。

然后在该控制器内部,使用Yii::app()->request->isAjaxRequest()检查您是否收到了ajax请求。

然后做任何你需要做的事情来验证或操纵。

插入或拒绝,将相应的错误消息返回视图。

答案 1 :(得分:1)

什么是insertdata.php档案?在Yii中,您只有一个输入文件 - index.php。您需要在某个控制器中创建操作。

这种方式你使用ajax也是可以接受的,在某些情况下最好使用ajaxLinks,ajaxButtons。

答案 2 :(得分:0)

谢谢我在经过一些试验和错误后想出来了。 使用此函数创建了一个名为MyController的新控制器文件:

public function actionAjaxRequest()
{

    if(isset($_POST['dval'])
     { 
       $val1 = $_POST['dval'];

       echo "works";
     }

   Yii::app()->end();
}

在我的ajax请求中,我有以下内容:

var data1 = 'dval=' + task;
$.ajax({ 
  type: "POST", 
  url: "<?php echo Yii::app()->createUrl('My/AjaxRequest'); ?>",
  data: data1,
  success: function(msg){ 
          alert("Success "+msg); },
  error: function(err){   
          alert("failure "+err); } 
 });

像魅力一样工作:)