JQuery ajax example

From EKiniWiki

Jump to: navigation, search

Using Zend Framework (Moduloar Directory Structure). The SUCCESS part of the jQuery code:

  success: function(msg){

The "msg" inside the function() is anything that is outputted by the Action Controller. So, you must disable the auto-rendering feature of Zend_View. You can do this by putting this line of code in your Action Controller.

  $this->_helper->viewRenderer->setNoRender();

Your header.phtml must contain the following lines:

<link rel="stylesheet" type="text/css" href="<?=$this->baseUrl?>/css/jquery-calendar.css" media="screen" />
<link rel="stylesheet" type="text/css" href="<?=$this->baseUrl?>/css/jquery.autocomplete.css" />
<script language="JavaScript" type="text/javascript" src="<?=$this->baseUrl?>/js/jquery.js"></script>
<script language="JavaScript" language="JavaScript" type="text/javascript" src="<?=$this->baseUrl?>/js/jquery-calendar.js"></script>
<script language="JavaScript" type="text/javascript" src="<?=$this->baseUrl?>/js/jquery.autocomplete.js"></script>

jquery-calendar.js can be found here: http://marcgrabanski.com/code/jquery-calendar/


Here is the .phtml example for Zend Framework with jQuery.

<?= $this->render('header.phtml') ?>
<script language="javascript">
$(function() {
    popUpCal.dateFormat = 'YMD-';
    $('#date_filed').calendar(); 
    $('#letter_date').calendar();
    $('#last_day').calendar();
    
    $('#editEmp').toggle(
        function() {
            //$('#empBox').attr('style','display: block');
            $('#empBox').slideDown();
        },
        function() {
            //$('#empBox').attr('style','display: block');
            $('#empBox').slideUp();
        }
    );
    
    //hide submit button if already submitted
    <?php if ($this->step_id > '1') : ?>
    $('#acceptancelettersave').hide();
    <?php endif; ?>
   
    //FOR THE SUBMIT BUTTON
    $('#acceptancelettersave').click(
        function() {
            
            if($('#date_filed').val() == '') {
                alert('Please enter the date filed.');
                return true;
            }
            
            if ($('#empSName').val() == '') {
                alert('Please enter an employee.');
                return true;
            }
            
            if($('#letter_date').val() == '') {
                alert('Please enter the letter date.');
                return true;
            }
            
            if($('#last_day').val() == '') {
                alert('Please enter the last day.');
                return true;
            }
            
            
            
            $('#acceptancelettersave').attr('disabled','true');
            $.ajax({
            type: "POST",
            url: "<?=$this->baseUrl?>/index/acceptancelettersave",
            data: "date_filed="+$('#date_filed').val()+
                  "&sepId="+$('#sepId').val()+
                  "&searchField="+$('#searchField').val()+
                  "&empId="+$('#empId').val()+
                  "&empSName="+$('#empSName').val()+
                  "&empFName="+$('#empFName').val()+
                  "&empLName="+$('#empLName').val()+
                  "&managerId="+$('#managerId').val()+
                  "&managerSName="+$('#managerSName').val()+
                  "&managerFName="+$('#managerFName').val()+
                  "&managerLName="+$('#managerLName').val()+
                  "&letter_date="+$('#letter_date').val()+
                  "&deptId="+$('#deptId').val()+
                  "&deptNo="+$('#deptNo').val()+
                  "&deptName="+$('#deptName').val()+
                  "&empDateHired="+$('#empDateHired').val()+
                  "&last_day="+$('#last_day').val()+
                  "&submitType=submit",
            success: function(msg){
                //alert( "Data Saved: " + msg );
                alert( "Data Saved: "+$('#empSName').val());
                $('#acceptancelettersave').removeAttr('disabled');
                window.location='<?=Zend_Registry::get('siteUrl')?>';
            }
        });
        }
    );
    
    //FOR THE SAVE BUTTON
    $('#acceptanceletterupdate').click(
        function() {
            if ($('#empSName').val() == '') {
                alert('Please enter an employee.');
                return true;
            }
            
            $('#acceptanceletterupdate').attr('disabled','true');
            $.ajax({
            type: "POST",
            url: "<?=$this->baseUrl?>/index/acceptancelettersave",
            data: "date_filed="+$('#date_filed').val()+
                  "&sepId="+$('#sepId').val()+
                  "&searchField="+$('#searchField').val()+
                  "&empId="+$('#empId').val()+
                  "&empSName="+$('#empSName').val()+
                  "&empFName="+$('#empFName').val()+
                  "&empLName="+$('#empLName').val()+
                  "&managerId="+$('#managerId').val()+
                  "&managerSName="+$('#managerSName').val()+
                  "&managerFName="+$('#managerFName').val()+
                  "&managerLName="+$('#managerLName').val()+
                  "&letter_date="+$('#letter_date').val()+
                  "&deptId="+$('#deptId').val()+
                  "&deptNo="+$('#deptNo').val()+
                  "&deptName="+$('#deptName').val()+
                  "&empDateHired="+$('#empDateHired').val()+
                  "&last_day="+$('#last_day').val()+
                  "&submitType=update",
            success: function(msg){
                //alert( "Data Saved: " + msg );
                alert( "Data Saved: "+$('#empSName').val());
                $('#acceptanceletterupdate').removeAttr('disabled');
                window.location='<?=Zend_Registry::get('siteUrl')?>';
            }
        });
        }
    );
    
    $('#empSNameTextBox').hide();
     $('#searchField').change(
        function() {
            if ($('#searchField').val() == 'empLName') {
                $('#empSNameTextBox').hide();
                $('#empSNameTextBox').val('');
                $('#empFullName').text('n/a');
                $('#empLNameTextBox').show();
            } else if ($('#searchField').val() == 'empSName') {
                $('#empLNameTextBox').hide();
                $('#empLNameTextBox').val('');
                $('#empFullName').text('n/a');
                $('#empSNameTextBox').show();
            }
        }
    );
    
    $("#empLNameTextBox").autocomplete(
    "<?=$this->baseUrl?>/index/lookup/",
        {
            delay:10,
            minChars:3,
            matchSubset:1,
            matchContains:1,
            cacheLength:200,
            onItemSelect:selectItem,
            onFindValue:findValue,
            formatItem:formatItem,
            extraParams:{searchField: 'empLName'},
            autoFill:true
        }
    );
    
    $("#empSNameTextBox").autocomplete(
    "<?=$this->baseUrl?>/index/lookup/",
        {
            delay:10,
            minChars:3,
            matchSubset:1,
            matchContains:1,
            cacheLength:200,
            onItemSelect:selectItem,
            onFindValue:findValue,
            formatItem:formatItem,
            extraParams:{searchField: 'empSName'},
            autoFill:true
        }
    );
    
  
    
    /*Auto Lookup functions*/
    
    function findValue(li) {
        if( li == null ) return alert("No match!");
        sValue = li.selectValue;
        $('#empFullName').text(li.extra[0]);
        $.ajax({
        type: "POST",
        url: "<?=$this->baseUrl?>/index/getempdetails/",
        data: "empsname="+sValue,
        success: function(msg){
            //alert( "Data Saved: " + msg );
            var empData = msg.split("|");
            $('#empSName').val(empData[0]);
            $('#empLName').val(empData[1]);
            $('#empFName').val(empData[2]);
            $('#empId').val(empData[3]);
            $('#deptId').val(empData[4]);
            $('#empDateHired').val(empData[7]);
            $('#deptNo').val(empData[11]);
            $('#deptName').val(empData[12]);
            $('#deptNoSpan').text(empData[11]);
            $('#deptNameSpan').text(empData[12]);
            
            $('#managerId').val(empData[9]);
            $('#managerLName').val(empData[13]);
            $('#managerFName').val(empData[14]);
            $('#managerSName').val(empData[15]);
            
            $('#managerLNameSpan').text(empData[13]);
            $('#managerFNameSpan').text(empData[14]); 
            $('#managerLNameSpan2').text(empData[13]);
            $('#managerFNameSpan2').text(empData[14]);
        }
        });
    }
    
    function selectItem(li) {
        findValue(li);
    }
    
    function formatItem(row) {
        return row[1] + "<br/>(" + row[0] + ")";
    }
    
   
});
</script>

    <center>
        <br />
        <h3><?=$this->page_title?></h3>
        <p style="margin-top: 0px;">
        <?=$this->sub_title?><br/>
        <?=$this->step_desc?'<div class="status_row">'.$this->step_desc.'</div>':''?>
        </p>
    </center>
    
    <table width="100%" class="borderless_table" cellpadding="0" cellspacing="0">
    <tr valign="top">
        <td width="40">DATE</td>
        <td width="10">:</td>
        <td><input type="text" name="date_filed" id="date_filed" class="cal" value="<?=$this->date_filed ? $this->date_filed : date('Y-m-d')?>"/></td>
    </tr>
    <tr valign="top">
        <td>TO</td>
        <td>:</td>
        <td>
            <div id="empBox" style="<?=$this->empSName?'display: none;':''?>">
            <input type="text" id="empLNameTextBox" class="lookup_box" />
            <input type="text" id="empSNameTextBox" class="lookup_box" />
            <select id="searchField" name="searchField">
                <option value="empLName">Last Name</option>
                <option value="empSName">Short Name</option>
            </select>
            <br/>
            </div>
            <input type="hidden" name="sepId" id="sepId" value="<?=$this->sep_id?$this->sep_id:''?>" />
            <input type="hidden" name="empId" id="empId" value="<?=$this->empId?$this->empId:''?>" />
            <input type="hidden" name="empSName" id="empSName" value="<?=$this->empSName?$this->empSName:''?>" />
            <input type="hidden" name="empFName" id="empFName" value="<?=$this->empFName?$this->empFName:''?>" />
            <input type="hidden" name="empLName" id="empLName" value="<?=$this->empLName?$this->empLName:''?>" />
            <input type="hidden" name="deptId" id="deptId" value="<?=$this->deptId?$this->deptId:''?>" />
            <input type="hidden" name="deptNo" id="deptNo" value="<?=$this->deptNo?$this->deptNo:''?>" />
            <input type="hidden" name="deptName" id="deptName" value="<?=$this->deptName?$this->deptName:''?>" />
            <input type="hidden" name="empDateHired" id="empDateHired" value="<?=$this->empDateHired?$this->empDateHired:''?>" />
            <span id="empFullName" style="font-weight: bold;"><?=$this->empSName?$this->empFName.' '.$this->empLName:'n/a'?></span><br/>
            Department: (<span id="deptNoSpan"><?=$this->deptNo?$this->deptNo:'n/a'?></span>) <span id="deptNameSpan"><?=$this->deptName?$this->deptName:''?></span>
            <div id="editEmp" style="<?=$this->sep_id==''?'display: none;':''?> cursor: pointer; color: #D25A0B;">Edit</div>
         </td>
    </tr>
    <tr valign="top">
        <td>FROM</td>
        <td>:</td>
        <td>
            <input type="hidden" name="managerId" id="managerId" class="" value="<?=$this->managerId?$this->managerId:''?>" />
            <input type="hidden" name="managerSName" id="managerSName" class="" value="<?=$this->managerSName?$this->managerSName:''?>" />
            <input type="hidden" name="managerFName" id="managerFName" class="" value="<?=$this->managerFName?$this->managerFName:''?>" />
            <input type="hidden" name="managerLName" id="managerLName" class="" value="<?=$this->managerLName?$this->managerLName:''?>" />
            <span name="managerFNameSpan" id="managerFNameSpan"><?=$this->managerFName?$this->managerFName:''?></span>  
            <span name="managerLNameSpan" id="managerLNameSpan"><?=$this->managerLName?$this->managerLName:''?></span>
            
        </td>
    </tr>
    <tr>
        <td>RE</td>
        <td>:</td>
        <td><b><?=strtoupper($this->page_title)?></b></td>
    </tr>
    </table>
    <div>
    <p>
        Blah blah blah
    </p>
    <p>
        Blah blah blah
        <br/>
        <br/>
        <u><span name="managerFNameSpan2" id="managerFNameSpan2"><?=$this->managerFName?$this->managerFName:''?></span> 
        <span name="managerLNameSpan2" id="managerLNameSpan2"><?=$this->managerLName?$this->managerLName:''?></span></u>
        <br/>
    </p>
    </div>
    <div class="buttons_bar">
    <input type="button" name="acceptancelettersave" id="acceptancelettersave" value="Submit" />
    <input type="button" name="acceptanceletterupdate" id="acceptanceletterupdate" value="Save" />
    </div>
<?php if (count($this->log)) : ?>
<div>
History:<br/>
<div class="logbox">
<?php
foreach($this->log AS $row) {
    echo $row->log_datetime.' '.$row->log_empSname.' '.$row->log_message.'<br/>';
}
?>
</div>
</div>
<?php endif; ?>

<?= $this->render('footer.phtml') ?>
Personal tools
Bookmarks