gpt4 book ai didi

mysql - 如何在 Zend Framework 中通过 jQuery/Ajax 执行 MySQL 插入

转载 作者:行者123 更新时间:2023-11-29 02:36:04 25 4
gpt4 key购买 nike

简要背景介绍:

我正在创建一个使用 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 错误是由两件事引起的:

  1. 我在以下 if 语句的 getRequest 部分省略了括号:

    if ($this->getRequest()->isXmlHttpRequest())

  2. 我忘记启用布局,我使用以下命令通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com