我有一个zii.widgets.jui.CJuiDialog
框通过ajax将表单发送到我的控制器。但是,当我测试控制器是否存在帖子if(isset($_POST['Item']))
时。它不存在,我不知道为什么。我正在调整这篇文章http://www.yiiframework.com/wiki/145/cjuidialog-for-create-new-model/
以满足我自己的需求。
这是模型中的表格:
<div class="form">
<form id="email-item-form" action="/www.mywebsite.ca/item/1/my-first-item" method="post"> <div id="email-item-success" class="label label-success"></div>
<div id="email-item-failure" class="label label-important"></div>
<div class="row">
<label for="Item_email_item">Email this item to:</label> <input placeholder="Send to..." name="Item[email_item]" id="Item_email_item" type="text" /> <div class="errorMessage" id="Item_email_item_em_" style="display:none"></div> </div><!-- row -->
<div class="row">
<label for="Item_email_item_sender">Email sent from:</label>
<input placeholder="Sent from..." name="Item[email_item_sender]" id="Item_email_item_sender" type="text" /> <div class="errorMessage" id="Item_email_item_sender_em_" style="display:none"></div> </div><!-- row -->
<br />
</form>
控制器
public function actionEmail($id)
{
if(isset($_POST['Item']))
{
// Rest of code
}
}
数据通过CHtml::ajax
发送,并声明'type'=>'post'
。该过程一直在将项目ID发送到控制器并将响应发送回模态框。自从我尝试确认$_POST['Item']
的存在以设置$model->attributes=$_POST['Item'];
任何帮助解决这个问题都会非常感谢你。
更新以显示CHtml :: ajax()
var url = '<?php echo Yii::app()->createUrl("item/email", array("id"=>$model->id)); ?>';
<?php echo CHtml::ajax(array(
'url'=>'js:url',
'data'=> "js:$(this).serialize()",
....// Rest of code
答案 0 :(得分:0)
我没有看到name="Item"
的任何输入或其他表单数据。但是,如果您更改您的PHP代码以查找表单的确切名称,它应该找到它们:
public function actionEmail($id)
{
if(isset($_POST['Item[email_item_sender]']))
{
// Rest of code
}
}
编辑:
如果您想查看所有发布数据以进行调试,可以使用PHP: Possible to automatically get all POSTed data?中的此代码
foreach ($_POST as $key => $value)
echo "Field ".htmlspecialchars($key)." is ".htmlspecialchars($value)."<br>";
答案 1 :(得分:0)
默认情况下,jQuery通过GET发送AJAX请求。试试这个:
<?php echo CHtml::ajax(array(
'url'=>'js:url',
'data'=> "js:$(this).serialize()",
'type'=>'POST'
...