1

我刚刚进入 Dojo,想尝试一个简单的 AJAX Post,就像Dojo 网站上的示例一样。

这是 HTML/JS:

<form method="POST" id="addProjectForm">
<dl>
    <dt>Project Name:</dt>
        <dd><input dojoType="dijit.form.TextBox" id="projectName"></dd>
    <dt>Project Description:</dt>
        <dd><textarea dojoType="dijit.form.Textarea" id="projectDescription" style="width: 300px; height: 100px"></textarea></dd>
</dl>

<button dojoType="dijit.form.Button" style="float: right">
    Save Project
    <script type="dojo/method" event="onClick">
        dojo.xhrPost({
            url: '/projects/add/',
            load: function(data, ioArgs) {
                alert(data);
            },
            error: function(data, ioArgs) {
                alert('There was an error');
            },
            form: 'addProjectForm'
        });
    </script>
</button>
</form>

在后端我有以下内容:

class ProjectsController extends Zend_Controller_Action
{
public function addAction()
{
    $this->_helper->layout->disableLayout();
    $this->_helper->viewRenderer->setNoRender(true);

    $projectName    = $this->_request->getParam('projectName');
    $description    = $this->_request->getParam('projectDescription');

    print_r($_POST);
}
}

当我单击“保存项目”按钮时,我得到一个 JS 警报框,其中包含空数组的 php 输出,因此没有任何信息被发布。我究竟做错了什么?

4

2 回答 2

2

这是因为一个愚蠢的错误。我没有在任何表单元素上设置名称,只有 ID。

于 2009-03-04T16:50:26.737 回答
0

由于我昨晚一直在玩通过 Dojo 发布数据,所以我要说一点。

dojo.xhrPost()似乎只在 Dojo Toolkit 的最后一个版本中工作,当使用以前的版本时,如果你想处理 POST 数据后服务器给你的响应,你会被锁定到dojo.io.iframe.send() 。文档对此有点不清楚。

于 2009-03-12T08:46:47.580 回答