你能帮我找到解决我问题的方法吗?
我有 4 个文本框字段:number
、、key
和。firstname
name
当我在填写后从数字字段中制表时,我想检查我的数据库是否存在这个数字。
如果是这样,我的应用程序应该选择链接到数字的姓名和名字(在我的数据库中)并填写其他字段名称和名字,然后禁用这些字段。
我认为我应该使用 ajax 但我不知道如何使用 ajax 和 Zend 来实现它。
我在网上搜索,我发现了一些我不明白的教程。
请问你能给我一步一步的方法吗?
谢谢
你能帮我找到解决我问题的方法吗?
我有 4 个文本框字段:number
、、key
和。firstname
name
当我在填写后从数字字段中制表时,我想检查我的数据库是否存在这个数字。
如果是这样,我的应用程序应该选择链接到数字的姓名和名字(在我的数据库中)并填写其他字段名称和名字,然后禁用这些字段。
我认为我应该使用 ajax 但我不知道如何使用 ajax 和 Zend 来实现它。
我在网上搜索,我发现了一些我不明白的教程。
请问你能给我一步一步的方法吗?
谢谢
只是一般的笔触:
Zend_Form
。checkNumberExistsAction()
onchange 处理程序对一个名为类似执行数据库查找的操作进行 AJAX 调用。返回包含检查结果的 JSON 格式信息。要记住的一件事:不要仅仅依靠这个客户端处理来防止提交禁用的字段。用户可以在客户端禁用脚本,因此请务必同时进行服务器端验证。
我完全同意@David 的做法,并为了纪念同样的做法,发布了这个框架代码:
示例视图.phtml
echo '<div id="a">'.$this->form.'</div>';
<?php $this->jQuery()->onLoadCaptureStart(); ?>
jQuery('#category').change(checkNumberExistsAction);
<?php $this->jQuery()->onLoadCaptureEnd(); ?>
<script type="text/javascript">
function checkNumberExistsAction(){
var p = $("#idOfNumberField").val();
var response = $.ajax({
url: "<?php echo $this->url(array('controller'=>'index',
'action'=>'sampleview')) ?>",
type: "GET",
data: {number: p}, //where number is number columnName in database
cache: false,
success: function(text){
response = text;
$("#name").val($(text).find("input[name='name']").val()); //where name is id of name field
$("#name").attr("disabled", "disabled");
$("#firstName").val($(text).find("input[name='firstName']").val()); //where firstName is id of first name field
$("#firstName").attr("disabled", "disabled");
},
error: function(){ alert('Something went wrong.'); }
});
}
</script>
索引控制器.php
public function sampleviewAction(){
if ($this->getRequest()->isXmlHttpRequest()){
$id = $this->_getParam('number', 0);
if ($id > 0){
$albums = new Application_Model_DbTable_Albums();
$form->populate($albums->getAlbum($id));}
}
}
模型sampleview.php
public function getAlbum($id){
$id = (int)$id;
$row = $this->fetchRow('e_recNo = ' . $id);
if (!$row){
throw new Exception("Could not find row $id");
}
return $row->toArray();
}