在ajax调用不起作用后,Yii从控制器操作重定向

时间:2014-06-15 14:49:38

标签: javascript php ajax yii

我在视图文件中使用以下按钮(不要注意第二个按钮,但我只想告诉您为什么我没有使用普通表单提交):

    <?php echo CHtml::Button('Search Symptom(s)', array('id'=>'search'));  ?>
    <?php echo CHtml::Button('Add Another Symptom to Search', array('id'=>'addSymptom'));  ?>

当用户点击按钮时,这个javascript会运行(它在document.ready函数中)

$('#search').click(function()
        {   
            //create new symptom in javascript
            var newSymptom = 
            {
                symptomCode: $('#symptomToBeSearchedCode').val(),
                dateSymptomFirstSeen: $('#dateSymptomSeen').val(),
                symptomTitle: $('#symptomToBeSearchedTitle').val()
            };
            //pass new symptom into symptomsList array
            symptomsList.push(newSymptom);
            //make ajax call to server
            $.ajax({
                type:'POST',
                url: '/mysymptomsbook/index.php?r=symptomhistory/search',
                data:{symptomsList: symptomsList} ,
                dataType:'html'
            });
        });

symptomsList是一个包含JS对象的数组

这是我的控制器操作中的代码:

 if(isset($_POST['symptomsList']))
    {   
        foreach($_POST['symptomsList'] as $symptom)
        {
            //populate symptom search model attributes with user id, current date, and form input
            $newSymptom = new Symptomhistory;
            $newSymptom->setAttributes(array(
                                'user_id'=>Yii::app()->user->id,
                                'dateSearched'=>date('Y-m-d'),
                                'symptomCode'=>$symptom['symptomCode'],
                                'dateSymptomFirstSeen'=>$symptom['dateSymptomFirstSeen'],
                                'symptomTitle'=>$symptom['symptomTitle'],
                                 ));
            //save search history
            $newSymptom->save();
            //add into the searched for symptoms code the latest code
            array_push($symptomCodes, strval($symptom['symptomCode']));
        }

        $this->redirect(array('disease/index'));
    }

我计划使用重定向将$ symptomCodes数组发送到另一个控制分数(DiseasesController和actionIndex),但即使没有传递任何内容,重定向也不起作用。模型会正常保存到我的数据库中。

任何人都知道出了什么问题?我认为它与Ajax有关,因为它正在等待响应,但我希望我的控制器能够重定向。任何帮助一如既往,非常感谢:)

1 个答案:

答案 0 :(得分:2)

我有类似的问题,建议您在官方论坛上查看此主题: redirect not working when called via Ajax-Request

请参阅主题中的最后一个答案。