Εφαρμογή με Ajax

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
NikolasMu
Δημοσιεύσεις: 22
Εγγραφή: 22 Μαρ 2009 22:22

Εφαρμογή με Ajax

Δημοσίευση από NikolasMu » 07 Ιουν 2011 17:08

Έχω βρει παρόμοια θέματα ψάχνοντας στο site και στο google, αλλά επειδή δεν ασχολούμαι καιρό με το Ajax δεν μπορώ να χρησιμοποιήσω τις λύσεις στο δικό μου πρόβλημα και έχω ζαλιστεί λίγο. Πρέπει λοιπόν να δώσω στοιχεία σε μία φόρμα και ύστερα να πάρω από ένα php αρχείο ένα αποτέλεσμα και να εμφανιστεί σε ένα Div, χωρις να γίνει refresh στην σελίδα. Το θέμα είναι ότι ίσως έχω βρει την άκρη, αλλά παίρνω πάντα λάθος αποτέλεσμα, και όχι στο σημείο που το θέλω, αλλά σε νέο παράθυρο.

Αρχείο .html

Κώδικας: Επιλογή όλων

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
	<script type="text/javascript">
		var xmlHttp;
		
		function requestData&#40;address&#41;
		&#123;
			if &#40;window.XMLHttpRequest&#41;
			&#123;
				xmlHttp = new XMLHttpRequest&#40;&#41;;
			&#125;
			else if &#40;window.ActiveXObject&#41;
			&#123;
				xmlHttp = new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;;
			&#125;
			xmlHttp.onreadystatechange = handleData;
			xmlHttp.open&#40;"GET", address, true&#41;;
			xmlHttp.send&#40;null&#41;;
			return&#40;true&#41;;
		&#125;
		
		function handleData&#40;&#41;
		&#123;
			if&#40;xmlHttp.readyState == 4&#41;
			&#123;
				alert&#40;xmlHttp.status&#41;;
				if&#40;xmlHttp.status == 200&#41; 
				&#123;
					document.getElementById&#40;'apopl'&#41;.innerHTML=xmlHttp.responseText;
				&#125;
				else 
				&#123;
					alert&#40;"Problem receiving response"&#41;;
				&#125;
			&#125;
		&#125;

</script>
</head>

<body>
<form name="daneio" action="" method="get">
  <table width="306" border="1">
    <tr>
      <td width="146">Ποσό Δανείου</td>
      <td width="144">
      <input type="text" name="poso" id="poso" /></td>
    </tr>
    <tr>
      <td>Επιτόκιο</td>
      <td>
      <input type="text" name="epitokio" id="epitokio" /></td>
    </tr>
    <tr>
      <td>Μηνιαία Δόση</td>
      <td>
      <input type="text" name="dosh" id="dosh" /></td>
    </tr>
    <tr>
      <th colspan="2"><input type="submit" name="ypologismos" id="ypologismos" value="Υπολογισμός" onclick="requestData&#40;'http&#58;//localhost/mysite/daneio.php'&#41;"/></th>
    </tr>
  </table>
  </form>
  
<p>Μήνες Αποπληρωμής&#58;
<div id="apopl">
</div>
</p>

</body>
</html>
Αρχείο PHP

Κώδικας: Επιλογή όλων

<?php

$pos=$_GET&#91;"poso"&#93;;
$dos=$_GET&#91;"dosh"&#93;;
$epi=$_GET&#91;"epitokio"&#93;;

$mines=0;


if &#40;$pos=0&#41;
&#123;
	$mines=0;
&#125;
	
else
&#123;
	while&#40;$pos>0&#41;
	&#123;
		$pos=$pos+&#40;$pos*&#40;$epi/100&#41;&#41;-$dos;
		$mines=$mines+1;
	&#125;
&#125;
echo "οι μηνες ειναι".$mines;
?>

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6235
Εγγραφή: 30 Νοέμ 2004 03:09

Εφαρμογή με Ajax

Δημοσίευση από fafos » 07 Ιουν 2011 21:58

kane to me jquery gia pio eukola:

Κώδικας: Επιλογή όλων

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
	<script type="text/javascript" src="http&#58;//code.jquery.com/jquery-1.4.2.min.js"></script>
	<script type="text/javascript" src="http&#58;//ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
	<script type="text/javascript">
	$&#40;document&#41;.ready&#40;function&#40;&#41;&#123;
		$&#40;"#forma"&#41;.validate&#40;&#123;
			debug&#58; false,
			rules&#58; &#123;
				poso&#58; "required",
				epitokio&#58; "required",
				dosh&#58; "required"
			&#125;,
			messages&#58; &#123;
				poso&#58; "poso ypoxreotikh symplhrosh",
				epitokio&#58; "epitokio ypoxreotikh symplhrosh",
				dosh&#58; "dosh ypoxreotikh symplhrosh",
			&#125;,
			submitHandler&#58; function&#40;form&#41; &#123;
				
				$.post&#40;'daneio.php', $&#40;"#forma"&#41;.serialize&#40;&#41;, function&#40;data&#41; &#123;
					$&#40;'#apopl'&#41;.html&#40;data&#41;;
				&#125;&#41;;
			&#125;
		&#125;&#41;;
	&#125;&#41;;
	</script>
</head>

<body>
<form method="post" id="forma" action="">
  <table width="306" border="1">
    <tr>
      <td width="146">Ποσό Δανείου</td>
      <td width="144">
      <input type="text" name="poso" id="poso" /></td>
    </tr>
    <tr>
      <td>Επιτόκιο</td>
      <td>
      <input type="text" name="epitokio" id="epitokio" /></td>
    </tr>
    <tr>
      <td>Μηνιαία Δόση</td>
      <td>
      <input type="text" name="dosh" id="dosh" /></td>
    </tr>
    <tr>
      <th colspan="2"><input type="submit" name="ypologismos" id="ypologismos" value="Υπολογισμός" /></th>
    </tr>
  </table>
  </form>
 
<p>Μήνες Αποπληρωμής&#58;
<div id="apopl">
</div>
</p>

</body>
</html>

sto php arxeio prepei na allaxeis tis metavlhtes apo GET se POST... me mia proth matia pou erixa sto php prepei na einai lathos o kodikas pou xrhsimopoieis..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

NikolasMu
Δημοσιεύσεις: 22
Εγγραφή: 22 Μαρ 2009 22:22

Εφαρμογή με Ajax

Δημοσίευση από NikolasMu » 08 Ιουν 2011 03:24

Πρέπει να το κάνω με Ajax. Ο κώδικας στο αρχείο .php γιατί λες ότι είναι λάθος;;; Εγώ δεν βλέπω που είναι το λάθος και γι αυτό πόσταρα εδώ.. Ευχαριστώ που ασχολήθηκες πάντως

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Εφαρμογή με Ajax

Δημοσίευση από Christianago » 08 Ιουν 2011 04:22

1.

Κώδικας: Επιλογή όλων

if &#40;$pos==0&#41; 
2.

Κώδικας: Επιλογή όλων

$pos=$_GET&#91;"poso"&#93;;
$dos=$_GET&#91;"dosh"&#93;;
$epi=$_GET&#91;"epitokio"&#93;; 
Απο που παιρνουν τιμες αυτες οι μεταβλητες; Κανονικα παιρνουν απο την ajax function. Επομενως εδω:

Κώδικας: Επιλογή όλων

xmlHttp.open&#40;"GET", address, true&#41;; 
Αρα 3.

Κώδικας: Επιλογή όλων

var poso= document.getElementById&#40;'poso'&#41;.value;
var epitokio= document.getElementById&#40;'epitokio'&#41;.value;
var dosh= document.getElementById&#40;'dosh'&#41;.value;

address ="?poso=" + poso + "&dos=" + dos + "&epi=" + epi;

NikolasMu
Δημοσιεύσεις: 22
Εγγραφή: 22 Μαρ 2009 22:22

Εφαρμογή με Ajax

Δημοσίευση από NikolasMu » 08 Ιουν 2011 14:44

Το τελευταίο κομμάτι κώδικα πρέπει να το βάλω στην συναρτηση την handleData();
Οι μεταβλητές στο php κομμάτι θα έπρεπε να παίρνουν τιμές από την φόρμα αν δεν είχα κάνει κάποιο λάθος.

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Εφαρμογή με Ajax

Δημοσίευση από Christianago » 08 Ιουν 2011 14:59

Νομιζω εχεις παρεξηγησει τη μεθοδο POST με τη GET. Στη GET λες ρητα ποιες μεταβλητες θα παρει το php αρχειο. Δε γινεται αυτοματα οπως στην POST.
Το τελευταιο κομματι κωδικα θα μπει στην requestData.
Η handleData ειναι απλα για εμφανιση των επιστρεφομενων δεδομενων, στην ουσια ο,τι μαγειρευεται στο php αρχειο.

NikolasMu
Δημοσιεύσεις: 22
Εγγραφή: 22 Μαρ 2009 22:22

Εφαρμογή με Ajax

Δημοσίευση από NikolasMu » 08 Ιουν 2011 15:08

Ναι, τώρα θα έγραφα ότι κατάλαβα που ήταν το λάθος μου. Άρα στο php τελικά, δεν αλλάζω τίποτα.
Αν αντί για get χρησιμοποιούσα post δηλαδή πως θα έπρεπε να γραφτεί ο συγκεκριμενος κώδικας που μου εδωσες;(εκτός από τις αλλαγες στο php που τις κάνω και μόνος)

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Εφαρμογή με Ajax

Δημοσίευση από Christianago » 08 Ιουν 2011 15:12

Άρα στο php τελικά, δεν αλλάζω τίποτα.

Κώδικας: Επιλογή όλων

if &#40;$pos==0&#41; 
Αν αντί για get χρησιμοποιούσα post δηλαδή πως θα έπρεπε να γραφτεί ο συγκεκριμενος κώδικας που μου εδωσες;(εκτός από τις αλλαγες στο php που τις κάνω και μόνος)
http://www.w3schools.com/php/php_post.asp

NikolasMu
Δημοσιεύσεις: 22
Εγγραφή: 22 Μαρ 2009 22:22

Εφαρμογή με Ajax

Δημοσίευση από NikolasMu » 08 Ιουν 2011 15:25

Έλεος ένα ίσον που δεν το πρόσεξα καν, ούτε όταν το ξαναέγραψες...:P
Πάντως δεν δουλεύει ακόμα η εφαρμογή, τώρα δεν κάνει απολύτως τίποτα και κάνει και refresh η σελίδα που δεν το θέλω

Σε αυτή τη γραμμή μου βγάζει σφάλμα ότι δεν έχει οριστεί το dos

Κώδικας: Επιλογή όλων

address ="?poso=" + poso + "&dos=" + dos + "&epi=" + epi;
dosh δεν πρέπει να είναι κανονικά επειδή πιο πάνω γράψαμε var dosh; και το epi epitokio;
Τελευταία επεξεργασία από το μέλος NikolasMu την 08 Ιουν 2011 15:40, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Εφαρμογή με Ajax

Δημοσίευση από Christianago » 08 Ιουν 2011 15:40

Ναι γιατι σου εγραψα λαθος τα ονοματα των μεταβλητων... Λοιπον:

Κώδικας: Επιλογή όλων

<?php

$pos=$_GET&#91;"poso"&#93;;
$dos=$_GET&#91;"dosh"&#93;;
$epi=$_GET&#91;"epi"&#93;;

$mines=0;


if &#40;$pos == 0&#41;
&#123;
   $mines=0;
&#125;
   
else
&#123;
   while&#40;$pos>0&#41;
   &#123;
      $pos=$pos+&#40;$pos*&#40;$epi/100&#41;&#41;-$dos;
      $mines=$mines+1;
   &#125;
&#125;
echo "οι μηνες ειναι".$mines;
?> 

Κώδικας: Επιλογή όλων

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=greek" />
<title>Untitled Document</title>
   <script type="text/javascript">
      var xmlHttp;
      
      function requestData&#40;address&#41;
      &#123;
        
         if &#40;window.XMLHttpRequest&#41;
         &#123;
            xmlHttp = new XMLHttpRequest&#40;&#41;;
         &#125;
         else if &#40;window.ActiveXObject&#41;
         &#123;
            xmlHttp = new ActiveXObject&#40;"Microsoft.XMLHTTP"&#41;;
         &#125;
         
         var poso= document.getElementById&#40;'poso'&#41;.value;
        var epitokio= document.getElementById&#40;'epitokio'&#41;.value;
        var dosh= document.getElementById&#40;'dosh'&#41;.value;

         queryString ="?poso=" + poso + "&dosh=" + dosh + "&epi=" + epitokio;
         
         xmlHttp.onreadystatechange = handleData;
         xmlHttp.open&#40;"GET", address+queryString, true&#41;;
         xmlHttp.send&#40;null&#41;;
         return&#40;true&#41;;
      &#125;
      
      function handleData&#40;&#41;
      &#123;
         if&#40;xmlHttp.readyState == 4&#41;
         &#123;
            alert&#40;xmlHttp.status&#41;;
            if&#40;xmlHttp.status == 200&#41;
            &#123;
               document.getElementById&#40;'apopl'&#41;.innerHTML=xmlHttp.responseText;
            &#125;
            else
            &#123;
               alert&#40;"Problem receiving response"&#41;;
            &#125;
         &#125;
      &#125;

</script>
</head>

<body>
  <table width="306" border="1">
    <tr>
      <td width="146">Ποσό Δανείου</td>
      <td width="144">
      <input type="text" name="poso" id="poso" /></td>
    </tr>
    <tr>
      <td>Επιτόκιο</td>
      <td>
      <input type="text" name="epitokio" id="epitokio" /></td>
    </tr>
    <tr>
      <td>Μηνιαία Δόση</td>
      <td>
      <input type="text" name="dosh" id="dosh" /></td>
    </tr>
    <tr>
      <th colspan="2">
      <input type="submit" name="ypologismos" id="ypologismos" value="Υπολογισμός" onclick="requestData&#40;'http&#58;//localhost//daneio.php'&#41;"/></th>
    </tr>
  </table>
  </form>
 
<p>Μήνες Αποπληρωμής&#58;
<div id="apopl"></div>
</p>

</body>
</html> 

NikolasMu
Δημοσιεύσεις: 22
Εγγραφή: 22 Μαρ 2009 22:22

Εφαρμογή με Ajax

Δημοσίευση από NikolasMu » 08 Ιουν 2011 15:53

Πάλι μου έβγαζε λάθος, αλλά λογικά επειδή είχαμε κάτι διαφορετικά γραμμένο που δεν έρβισκα, και τελικά έκανα copy-paste τα δικά σου και ψιλοδούλεψε...Δηλαδή τώρα βγάζει αποτέλεσμα σωστό, αλλά πάλι το πετάει σε παραθυράκι, δεν το γράφει στο div. Όταν πατήσω το οκ στο παραθυράκι αυτό για να κλείσει μου γράφει Problem receiving response

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Εφαρμογή με Ajax

Δημοσίευση από Christianago » 08 Ιουν 2011 16:09

Το ετρεξα σε IE kai Firefox και το γραφει στο div. Τωρα δεν ξερω γιατι πρεπει να εχεις alert του ειδους: alert("Problem receiving response");
Διαβασε εδω πως να μανατζαρεις τα error codes.
http://www.ajaxprojects.com/ajax/tutori ... itemid=484

NikolasMu
Δημοσιεύσεις: 22
Εγγραφή: 22 Μαρ 2009 22:22

Εφαρμογή με Ajax

Δημοσίευση από NikolasMu » 08 Ιουν 2011 16:43

error 404 λέει. Τεσπά, αν το δοκίμασες και δουλεύει, λογικά είναι οκ, θα το δοκιμάσω και σε άλλο υπολογιστή να δω. Ευχαριστώ πολύ

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Εφαρμογή με Ajax

Δημοσίευση από Christianago » 08 Ιουν 2011 16:48

NikolasMu έγραψε:error 404 λέει. Τεσπά, αν το δοκίμασες και δουλεύει, λογικά είναι οκ, θα το δοκιμάσω και σε άλλο υπολογιστή να δω. Ευχαριστώ πολύ
Τοτε ειχες αλλο προβλημα εξαρχης. Στη σελιδα που σου εδωσα γραφει:
404: Not Found

This means the server has not found anything matching the Request- URL.
Αυτο μπορει να οφειλεται οτι το αρχειο php που ζητας δε βρισκεται στην τοποθεσια απο την οποια το ζητας.

NikolasMu
Δημοσιεύσεις: 22
Εγγραφή: 22 Μαρ 2009 22:22

Εφαρμογή με Ajax

Δημοσίευση από NikolasMu » 08 Ιουν 2011 16:53

Πωπω ναι...Καλά. Απλά εγώ το είχα αποθηκεύσει σε διαφορετικό φάκελο από εσένα και με το copy-paste που έκανα δεν το πρόσεξα, και φαίνεται να είναι το αρχείο σε φάκελο που δεν υπάρχει. Όλα καλά, σε ευχαριστώ πολύ

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες