JQuery.change kullanarak Ajax Driven PHP Sayfası içine Formu Veri yükleniyor

3 Cevap php

Ben muhtemelen bazı aptalca bir hata yapıyorum ama ben jQuery dünyasına yeni duyuyorum ve bu konuda biraz yardım arıyorum.

Ben onların değerlerini değiştirmek bir kez kontrol etmek / iki tarih doğrulamak gereken bir form var. Onlar değiştirdikten sonra ben bir sayfa "checkdates.php" yüklenen ve iki veri bit geçirilen bir Ajax çağrısı vardı. GET kullanarak ve URL dizesine veri ekleme "checkdates.php" için bir proje adı değişti ve tarih. Bu Ajax arama kimliği "statü" ile bir div sayfa yüklenmiştir ve php sayfa tarih kontrolünün sonucu ne görüntülenir.

Eski kod bir fonksiyonu olarak verileri çekmek için prototip kullanılan ve form elemanları üzerinde değiştiğinde olay kullanılır:

<script type="text/javascript" src="prototype.js"></script>
    <script type="text/javascript">
    /*function checkDate(date,project){
    if(date!==''){
    new Ajax.Updater('status', 'datechecker.php?date='+date+'&project='+project, { method: 'get' });
    } else {
    alert('enter a valid date!');
    }
    }
</script>

Jquery üzerinde taşımak için çalışıyorum kodu şimdi gibi görünüyor:

<script type="text/javascript">
    $(document).ready(function() {
    	$('input#date_to').change(function() {
    	var datevalue = $(this).val();
    	$('#status').load('datechecker.php?date='+datevalue+'&project='+<? echo $_COOKIE['department']; ?>);
    	}
    	);

    	$('input#date_from').change(function() {
    	var datevalue = $(this).val();
    	$('#status').load('datechecker.php?date='+datevalue+'&project='+<? echo $_COOKIE['department']; ?>);
    	}
    	);
    });
    </script>

Ben o ateş değil çünkü benim veri çekiyorum ya da nasıl kontrol etmek için soruyorum. Özelliğini değiştirmek nasıl muhtemelen bir sorun olabilir düşünüyorum. Herhangi bir yardım harika olurdu. Yine yasal uyarı: Ben bazı bariz aptal bir hata ise çok güzel lütfen jquery yeni sayılırım.

EDIT: As requested the HTML/PHP of the rest of the file (sorry for the formatting, this was a quick and dirty project that was last minute but turned into a huge headache):

<form id="form1" name="form1"  method="get" action="?page=post_request">
<div class="timeavailable">
<? 
    require('data.php');
    $name=$_COOKIE['un'];
    $query="SELECT * FROM time WHERE emp_name='".$name."'";
    $result=mysql_query($query);
    $num=mysql_num_rows($result);
    mysql_close();
    $i=0;
?>
Vac: <b><? echo mysql_result($result,$i,"vacationtime"); ?></b>   
Personal: <b><? echo mysql_result($result,$i,"personaltime"); ?></b>
Pts: <b><? echo mysql_result($result,$i,"points"); ?></b>
<input type="hidden" name="vacationtime" value="<? echo mysql_result($result,$i,"vacationtime"); ?>">
<input type="hidden" name="personaltime" value="<? echo mysql_result($result,$i,"personaltime"); ?>">
</div>
    	<h1>Time Off Request Form</h1>
    	<div class="header">
<div class="floatydetails">
<br>
Reason for Absence:<br>
<textarea name="reason_detail" id="reason_detail" rows="<?php echo $textareaheight; ?>" cols="<?php echo $textareawidth; ?>"></textarea>
<div id="status"></div>
<div id="daysrequested"></div>
</div>

    	<div class="col1">
    	Type of Absence Requested:<br>
    		<label for="reason_for_request"></label>
    			<select name="reason_for_request" id="reason_for_request">
    				<option value="Sick" >Sick</option>
    				<option value="Vacation" >Vacation</option>
    				<option value="Bereavement" >Bereavement**</option>
    				<option value="Doctor Appointment" >Doctor Appointment**</option>
    				<option value="Court" >Court*</option>
    				<option value="Jury Duty" >Jury Duty*</option>
    				<option value="Personal Day" >Personal Day</option>
    				<option value="Other" >Other</option>
    			</select><br>
    	<div class="col2">
    		Date of Request (mm/dd/yyyy)<br/>
    		<label for="date_from">From:</label> 
    		<input type="text" name="date_from" id="date_from" class="required" /><br>
    		<label for="date_to">To:</label> 	
    		<input type="text" name="date_to" id="date_to" class="required" /><br>
    		Partial Request (HH:MM am/pm)<br/>
    		<label for="date_from">From:</label> 
    		<input type="text" name="partial_from" id="partial_from" class="date-pick"  /><br>
    		<label for="date_to">To:</label> 	
    		<input type="text" name="partial_to" id="partial_to" class="date-pick" /><br>

    	</div>
    	</div>
    	<div class="clear-fix"></div><br><br>
    	<hr>
    	<center><b>
    	Note: If You do Not have the Time Available, Your request will be Denied.<br>
    	* Proper Documentation is required Before approval is made.   ** Proper documenation is required upon return.
    	</b></center>
    	</div>
    	<input type="hidden" name="do" value="post">
    	<input type="hidden" name="emp_name" value="<? echo $_COOKIE['un']; ?>">
    	<input type="hidden" id="projects" name="projects" value="<? echo $_COOKIE['department']; ?>">
    	<input type="hidden" name="supervisor" value="<? echo $cms->grabItemByName(employees, $_COOKIE['user_id'], supervisor); ?>">
    	<input type="hidden" name="emp_number" value="<? echo $cms->grabItemByName(employees, $_COOKIE['user_id'], employee_id); ?>">
    	<input type="hidden" name="page" value="post_request">
    	</form>

3 Cevap

Ben yardım ve bazı deneme yanılma sonra bazı bir çözüm bulundu. . Ajax kullanarak ne istediğini yapmak için daha fazla flexiability elde edebildi.

<script type="text/javascript">
    $(document).ready(function() {
        $('#date_to,#date_from').change(function() {
    	//$('input').change(function() {
            var datevalue = $(this).val();
    		var project = $('#projects').val();
            $('#status p').load('datechecker.php?date='+datevalue+'&project='+project);
        });
    });
</script>

Bu kimse yardımcı olur umarım.

$_COOKIE['department'] tamsayı mı? Aksi takdirde muhtemelen orada bir sözdizimi hatası olacak.

Işlevleri böyle bunları birleştirebilirsiniz böylece aynı olması gibi ikisi:

<script type="text/javascript">
    $(document).ready(function() {
        $('input#date_to,input#date_from').change(function() {
            var datevalue = $(this).val();
            $('#status').load('datechecker.php?date='+datevalue+'&project='+<? echo json_encode($_COOKIE['department']); ?>);
        });
    });
</script>

Burada olası bir cevap:

http://stackoverflow.com/questions/695946/jquery-change-event-trigger

Ayrıca, php sayfa doğru değerleri dönen / oluyor emin olmak için Firebug konsolu izlerken deneyin.