- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
简要背景介绍:
我正在创建一个使用 HTML 5 canvas 元素的绘图程序。我想让用户能够在任何给定时间保存他们绘图的内容。到目前为止,我已经能够通过 javascript 创建一个包含绘图内容的数组。
我想做什么:
我现在要做的是创建一个“保存”按钮,按下该按钮后,数组将插入到 MySQL 表中。我目前正在尝试自学如何通过 Zend Framework 中的 jQuery/Ajax 执行此操作。我唯一不确定的是如何让 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>
来 self 的 Controller 的代码片段: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.";
}
}
从上面提到的代码,我知道我做这一切都是错误的,我想知道是否有人可以帮助我完成这个过程。非常感谢您。
编辑:
我做了 sudol 建议的更改,这是我开始工作的代码的最终副本:
我更新的 Controller CreateDrawingController.php:
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 '</pre>';
}
}
我的 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 错误是由两件事引起的:
我在以下 if 语句的 getRequest 部分省略了括号:
if ($this->getRequest()->isXmlHttpRequest())
我忘记启用布局,我使用以下命令通过 Zend 的 Windows CLI 工具启用它们:
zf 启用布局
感谢 sudol 的所有帮助!希望这可以帮助其他人。 :)
最佳答案
你很接近,
使用您的 ajax 调用:
$.ajax(
{
url: "/public/create-drawing/save",
data: drawingContents,
type: "POST",
success: function(response){
alert('Success!');
}
});
您需要在 CreateDrawingController
中调用一个名为 saveAction
的新 Action,而不是 indexAction
。您可以通过执行 $this->getRequest()->getParams()
检索数据,然后在您执行操作时将其保存。像这样的东西:
public function saveAction()
{
if($this->getRequest()->isXmlHttpRequest())
{
$drawingArray = $this->getRequest()->getParams();
$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.";
}
}
注意:我没有测试这段代码!但我认为这是正确的。首先,你们非常亲密。
希望这有帮助:)
关于mysql - 如何在 Zend Framework 中通过 jQuery/Ajax 执行 MySQL 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4961276/
我是一名优秀的程序员,十分优秀!