【问题标题】:Yii redirect from controller action after ajax call not workingajax 调用不起作用后,Yii 从控制器操作重定向
【发布时间】:2014-06-15 14:49:37
【问题描述】:

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

    <?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 有关,因为它正在等待响应,但我希望我的控制器改为重定向。任何帮助一如既往,非常感谢:)

【问题讨论】:

    标签: javascript php ajax yii


    【解决方案1】:

    我也遇到过类似的问题,推荐你去官方论坛看看这个话题: redirect not working when called via Ajax-Request

    查看主题中的最后一个答案。

    【讨论】:

    • 谢谢老兄,真的很有帮助
    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多