シンプルな ZF 1 チャットボックス アプリケーションを作成しようとしていますが、チャット投稿をデータベースに挿入しようとすると、内部サーバー 500 エラーが発生します。また、JSONであると定義されていても、ajaxからのデータはtext/htmlとして送信されています。firebug のネットワーク タブが示すように、HTML コード全体が応答として返されます。誰か助けてください。コントローラーのコードは次のとおりです。
class AjaxController extends Zend_Controller_Action
{
public function init(){
$contextSwitch = $this->_helper->getHelper('AjaxContext');
$contextSwitch->addActionContext('index','json')
->initContext();
}
public function indexAction()
{
if($this->getRequest()->isXmlHttpRequest()) {
$data = $this->getRequest()->getPost();
$chatModel = new Application_Model_DbTable_Chat();
$chatModel->createPost($data);
$chatPosts = $chatModel->fetchAll();
return $this->_helper->json->sendJson($chatPosts);
}
}
}
ここにajaxがあります:
$(document).ready(function(){
$('#chat').submit(function(){
var message = $('#message').val();
$.ajax({
type: 'POST',
dataType: 'json',
url: '/ajax/index',
data: { 'message': message },
success: function(data) {
$('#outputArea').html(data);
},
failure: function(){ alert("does not work");
}
});
return false;
});
});
モデル:
class Application_Model_DbTable_Chat extends Zend_Db_Table_Abstract
{
protected $_name = 'chat';
public function createPost($data){
$insertData = array(
'messages' => $data['message']
);
return $this->insert($insertData);
}
}
およびフォーム(レイアウトファイルに手動で記述しました):
<form id="chat" action="/ajax/index" method="post">
<h2>Chat</h2>
<p id="outputArea"></p>
<textarea name="message" id="message" cols="31" rows="3"></textarea>
<input type="submit" value="post a message" name="submit" />
</form>