use*_*411 11 javascript php ajax zend-framework
我通过ajax调用将post参数传递给控制器动作时遇到了一些问题.我不确定它为什么要这样做,因为其他ajax调用按预期执行.我得到的回应如下:
Notice: Undefined index: user_bio in C:\xampp\htdocs\module\Members\src\Members\Controller\ProfileController.php on line 149
Run Code Online (Sandbox Code Playgroud)
控制器代码是:
public function changebioAction()
{
$layout = $this->layout();
$layout->setTerminal(true);
$view_model = new ViewModel();
$view_model->setTerminal(true);
if ($this->request->isPost()) {
try {
$params = $this->params()->fromPost();
$this->getProfileService()->editProfile(array('bio' => ltrim($params['user_bio'])));
} catch (ProfileException $e) {
$this->flashMessenger()->addErrorMessage($e->getMessage());
return $this->redirect()->toRoute('members/profile', array('action' => 'change-failure'));
}
}
return $view_model;
}
Run Code Online (Sandbox Code Playgroud)
javascript和html:
// handle quick edit of bio
function quickEditBio(element, button) {
var edited_data = $(element).html();
var data = $(element).blur(function() {
edited_data = $(element).map(function() {
return this.innnerHTML;
}).get();
});
$(button).on('click', function() {
$.ajax({
method : "POST",
url : "/members/profile/change-bio",
data : {
user_bio : edited_data[0]
}
}).done(function(msg) {
// bio saved
// go back to profile page
//location.href = '/members/profile';
alert(msg);
}).fail(function() {
alert("Error changing bio, please try again.");
});
});
}
<button onclick="expand('bio')" class="w3-btn-block w3-theme-d2 w3-left-align">
<i class="fa fa-book fa-fw w3-margin-right"></i> Bio
</button>
<div id="bio" class="w3-accordion-content w3-container">
<div class="w3-display-container">
<p id="bio-user" contenteditable="true">
<?php echo $this->layout()->bio; ?>
</p>
<div class="w3-display-right">
<button class="w3-btn-block w3-theme-d2" id="save-bio">Save</button>
</div>
<script type="text/javascript">
quickEditBio('#bio-user[contenteditable=true]', $('#save-bio'));
</script>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如前所述,我得到的错误是索引user_bio未定义:
Notice: Undefined index: user_bio in C:\xampp\htdocs\module\Members\src\Members\Controller\ProfileController.php on line 149
Run Code Online (Sandbox Code Playgroud)
真正令人困惑的部分是其他部分使用相同的代码并且工作得很好.
任何帮助,将不胜感激.
谢谢!
问题在于你的JavaScript.
每次在元素上"模糊"时,它都会将edited_data变量设置为空数组.
edited_data[0] 然后变得未定义,并将注意发布到您的PHP.
这意味着$params['user_bio']将是未定义的索引,因为user_bio未作为参数被接收.
解决此问题:
删除$(element).map并替换它$(element).html();
也改为edited_data[0]编辑_data,因为这将不再是一个数组.
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |