我使用dojo与Zend 1合作,不知道如何使用ajax。在我的特殊情况下,当选择一个选择时,是否从数据库信息中查询ajax。要从用户输入ID,请通过ajax打印用户的信息。在我的工作中,我不能使用jquery。
答案 0 :(得分:2)
好问题! 使用dojo不是很有效率的工作,但是可以确切地说你想要什么。您将使用数据库中捕获的信息创建p元素
在表单中,添加属性'onChange'
$form->setAttrib('onChange', 'recoveryData()');
在js文件中你有一个函数recoveryData(),例如:
dojo.require("dojo.html");
// clean data
var myNewElement = dojo.byId('myNewElement');
if (myNewElement != null) {
dojo.empty("myNewElement");
}
dojo.xhrPost({
content: {id: dojo.attr(dojo.byId("myElement"), "value")},
url: 'your-base-path/recovery-data/',
load: function (response) {
if (response != false) {
// converte to obj
var obj = dojo.fromJson(response);
// creat new element
var node = dojo.create("span", {
innerHTML: obj.NomeServidor,
id: "myNewElement",
'class': 'row'
}
);
dojo.place(node, dojo.byId("myElement"), "after");
}
}
});
现在,您需要在Controller中创建一个Action“recoveryDataAction()”,如下所示:
$data = $this->getrequest()->getPost();
$id = $data['id'];
if ($this->getrequest()->isXmlHttpRequest()) {
// disable layout
$this->_helper->layout()->disableLayout();
// disable view render
$this->_helper->viewRenderer->setNoRender();
$yourTable = new Project_Model_YourTable();
$row = $yourTable->fetchRow($id);
if ($infos != null) {
echo Zend_Json::encode($row);
return;
}
echo false;
}