我在视图文件中使用以下按钮(不要注意第二个按钮,但我只想告诉您为什么我没有使用普通表单提交):
<?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有关,因为它正在等待响应,但我希望我的控制器能够重定向。任何帮助一如既往,非常感谢:)
答案 0 :(得分:2)
我有类似的问题,建议您在官方论坛上查看此主题: redirect not working when called via Ajax-Request
请参阅主题中的最后一个答案。