【发布时间】:2014-09-11 14:53:37
【问题描述】:
我有一些类别名称的下拉列表,我想通过使用 ajax 来获取所选类别的名称并将它们发送到 ajax 脚本所在的同一个 php 页面,这是我的 新代码:
创建动作代码:
public function actionCreate()
{
$model=new News;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['category']))
$category = $_POST['category'];
else
$category = NULL;
if(isset($_POST['News']))
{
$model->attributes=$_POST['News'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
$this->render('create',array(
'model'=>$model, 'category'=>$category
));
}
表格代码:
<div class="row">
<?php echo CHtml::label('Choose category to add from',''); ?>
<?php $data = array('celebrities'=>'Celebrities', 'events'=>'Events', 'videos'=>'Videos', 'editorials'=>'Editorials'); ?>
<?php echo CHtml::dropDownList('category', '', $data); ?>
</div>
<script type="text/javascript">
$("#category").change(function(){
var category = $(this).val();
$.ajax({
url:'/tonyward/index.php/news/create',
data:{category:category},
type:'POST',
dataType:'html',
success:function(data) {
console.log(data.category)
},
cache:false
});
});
</script>
<div class="row">
<?php echo $form->labelEx($model,'idItem'); ?>
<?php $data = array('celebrities'=>$category); ?>
<?php echo CHtml::dropDownList('subcategory', '', $data); ?>
<?php echo $form->error($model,'idItem'); ?>
</div>
现在第二个下拉列表的数据应该如何变化?
旧代码:
<div class="row">
<?php echo CHtml::label('Choose category to add from',''); ?>
<?php $data = array('celebrities'=>'Celebrities', 'events'=>'Events', 'videos'=>'Videos', 'editorials'=>'Editorials'); ?>
<?php echo CHtml::dropDownList('category', '', $data); ?>
</div>
<script type="text/javascript">
$("#category").change(function(){
$("#category").change(function(){
var category = $(this).val();
$.ajax({
url:window.location.href,
type:'GET',
data:{category:category},
dataType:'json',
cache:false,
success:function(data){
},
});
});
</script>
<?php
if(isset($_GET['category'])){
$category = $_GET['category'];
echo "<script>alert('done');</script>";
}
?>
【问题讨论】:
-
您的具体问题是什么?
-
你知道你的页面 AJAX 调用返回 WHOLE PAGE 加上
<script>alert('done');</script>吗?这实际上是 NOTjson,由dataType指定。因此,我预计会出现解析错误,并且不会触发.error处理程序。如果调用成功,您不会渲染返回的内容......因此您不会看到警报。