Краткое краткое описание:
Я нахожусь в процессе создания программы для рисования, которая использует элемент холста HTML 5.Я хотел бы, чтобы пользователь мог сохранять содержимое своего рисунка в любой момент времени.Пока что я могу создать массив, который содержит содержимое чертежа с помощью JavaScript.
Что я хотел бы сделать:
Что я пытаюсь сделатьсделать сейчас - создать кнопку «Сохранить», после нажатия которой массив вставляется в таблицу MySQL.В настоящее время я пытаюсь научить себя, как это сделать через jQuery / Ajax в Zend Framework.Единственное, в чем я не уверен, так это как заставить Zend Controller получать данные из запроса Ajax.
Это то, что у меня есть до сих пор:
Фрагмент кода из index.phtml:
<button type="submit" id="saveButton" name="saveButton">Save</button>
<script type"text/javascript">
$(document).ready(function()
{
$("#saveButton").click(function()
{
$.ajax(
{
url: "/CableDesign/public/create-drawing/save",
data: drawingArray,
type: "POST",
success: function(response){ alert('Success!'); }
});
});
});
</script>
Фрагмент кода из моего контроллера: CreateDrawingController.php
public function indexAction()
{
if($this->_request->isXmlHttpRequest())
{
// This is where I would retrieve my array from the Ajax request and insert its contents into my database table.
$drawingArray = $this->getParam('drawingContents');
$drawingModel = new Application_Model_DbTable_DrawingModel();
$boolInsert = $drawingModel->insertContents($drawingArray);
if ($boolInsert)
$this->view->message = "Successful save!";
else
$this->view->message = "Fail to save your drawing.";
}
}
Из вышеприведенного кода:Я знаю, что я все об этом ошибаюсь, и мне было интересно, может ли кто-нибудь там помочь мне в этом процессе.Заранее большое спасибо.
Редактировать:
Я внес изменения, предложенные Судолом, вот последняя копия кода, который я получил для работы:
Мой обновленный контроллер CreateDrawingController.php :
<code> class CreateDrawingController extends Zend_Controller_Action
{
public function init()
{
}
public function indexAction()
{
}
public function saveAction()
{
if($this->getRequest()->isXmlHttpRequest())
{
//$drawingArray = $this->getRequest()->getParams();
$drawingArray = $this->getRequest()->getParam('drawingArray');
$drawingModel = new Application_Model_DbTable_DrawingModel;
$boolInsert = $drawingModel->insertContents($drawingArray);
if ($boolInsert)
$this->view->message = "Successful save!";
else
$this->view->message = "Fail to save your drawing.";
}
}
private function printArray($array)
{
echo '<pre>';
print_r($array);
echo '
';}}
Обновленный фрагмент кода в моем index.phtml
<script type"text/javascript">
$(document).ready(function()
{
$("#saveButton").click(function()
{
$.ajax(
{
url: "/CableDesign/public/create-drawing/save",
data: { drawingArray : drawingArray },
type: "POST",
success: function(response){ alert('Success!'); }
});
});
});
</script>
Внутренний сервер 500 Ошибки были вызваны двумя причинами:
Я оставил скобки в части getRequest следующего оператора if:
if ($this->getRequest()->isXmlHttpRequest())
Я забылвключить макеты, и я включил их с помощью Zend's CLI Tools для Windows, используя следующую команду:
zf enable layout
Спасибо за помощь sudol!Надеюсь, это поможет кому-то еще.:)