你能帮我找到解决问题的方法吗?
我有4个文本框字段:number
,key
,firstname
和name
。
当我在填写之后从数字字段列表时,我想检查我的数据库中是否存在这个数字。
如果是这样,我的应用程序应该选择链接到该号码的名称和名字(在我的数据库中),并填写其他字段名称和名字,然后禁用这些字段。
我认为我应该使用ajax但我不知道如何使用ajax和Zend来实现它。
我搜索了网页,发现了一些我不理解的教程。
请你能一步一步地给我这个吗?
由于
答案 0 :(得分:1)
只是一般的笔触:
Zend_Form
以标准方式生成表单。checkNumberExistsAction()
的动作进行AJAX调用,该动作执行数据库查找。返回包含检查结果的JSON格式信息。要记住的一点是:不要仅仅依靠此客户端处理来阻止提交禁用字段。用户可以在客户端禁用脚本,因此请务必进行服务器端验证。
答案 1 :(得分:0)
我完全同意@David方法,并且为了纪念这个问题,发布这个骨架代码:
<强> sampleview.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>
<强> IndexController.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));}
}
}
<强> Modelsampleview.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();
}