0

你能帮我找到解决我问题的方法吗?

我有 4 个文本框字段:number、、key和。firstnamename

当我在填写后从数字字段中制表时,我想检查我的数据库是否存在这个数字。

如果是这样,我的应用程序应该选择链接到数字的姓名和名字(在我的数据库中)并填写其他字段名称和名字,然后禁用这些字段。

我认为我应该使用 ajax 但我不知道如何使用 ajax 和 Zend 来实现它。

我在网上搜索,我发现了一些我不明白的教程。

请问你能给我一步一步的方法吗?

谢谢

4

2 回答 2

1

只是一般的笔触:

  1. 使用标准方式生成表单Zend_Form
  2. 在客户端(例如,使用 jQuery),将 onchange 处理程序附加到 number 字段。
  3. checkNumberExistsAction()onchange 处理程序对一个名为类似执行数据库查找的操作进行 AJAX 调用。返回包含检查结果的 JSON 格式信息。
  4. AJAX 调用的成功函数然后检查返回结果,填充和禁用其他元素。

要记住的一件事:不要仅仅依靠这个客户端处理来防止提交禁用的字段。用户可以在客户端禁用脚本,因此请务必同时进行服务器端验证。

于 2012-01-11T06:17:51.373 回答
0

我完全同意@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();
}
于 2012-07-31T23:50:12.247 回答