Προς το περιεχόμενο

Select option/Ajax


Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

Έχω τα εξής:

 

Έχω ένα <select  onchange="show(this.value)"> ...</select> και ακριβώς από κάτω μέσα σε μία φόρμα έχω ένα <table> όπου το γεμίζω με κάποια SESSION που παίρνω τις τιμές από ένα αρχείο countRequest.php. Αυτό που θέλω να κάνω είναι αναλόγως το select που θα επιλέξει ο χρήστης να επιστρέφει το php αρχείο μέσω του SESSION τις κατάλληλες τιμές.

 

Το θέμα είναι ότι προσπάθησα να το κάνω με Ajax αλλά δεν τα κατάφερα.

function show(str) {
    console.log(str);
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else { 
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        } else {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","countRequest.php?r="+str,true);
        xmlhttp.send();
    }

Καμία ιδέα για το πως θα γινόταν;

Ευχαριστώ.

Δημοσ.
$.ajax({
  type: "GET",
  url: "countRequest.php",
  data: {data : str}, 
  cache: false,
  success: function(data) {
   console.log(data);
  }
});

Βάλε jquery και κάνε το παραπάνω.

Η μεταβλητή data είναι ότι θα σου κάνει echo το countRequest.php.

Μέσα στο success κάνεις ότι θες για να γεμίσεις τα tables της html σου.

Δημοσ.

Δεν έχω καταλάβει κάτι.

 

Αν μέσα στο countRequest.php έχω κάποια S_SESSION και θέλω να τυπώσω στην html σελίδα μου(για την ακρίβεια σε ένα table) πως θα γίνει με το παραπάνω που θα εξαρτάτε από drop menu;

 

Σε ευχαριστώ.

Δημοσ.

Αν δε θες να βάλεις τα session στο header.php και να τα κάνεις echo με την μια, τότε από την countRequest.php θα κάνεις echo τις μεταβλητές και στο success(data) θα τις πετάς όπου θες.

Κάνε μερικές δοκιμές να δεις τι γίνεται στο success και εδώ είμαστε :D

p.s console.log("is your friend"); 

Δημοσ.

Μια χαρά φίλε, τελικά βρήκα την λύση ήταν εύκολο.

 

Τα αποτελέσματα τα τυπώνω μέσα σε μία <form> και θέλω κάθε φορά που πατάω submit να παραμένω εκεί που ήμουν και πριν (στο συγκεκριμένο option) αλλά όσα έχω καταφέρει δεν έχουν αποτέλεσμα, δεν ξέρω μήπως έχεις να προτείνεις κάτι. 

Δημοσ.

Αν κατάλαβα καλά θες το dropdown menu να μένει στην επιλογή που διάλεξες.

Στο option element θα βάλεις selected αν το value είναι ίσο με την επιλογή.

Αν θες δώσε κώδικα να είναι πιο εύκολο.

Δημοσ.

Έχω αυτό...

<form name="formfinally" id="formfinally" action="SendSubjFinally.php" method="POST">

                   
            <div id="txt">
               <!-- παρουσίαση τον αποτελεσμάτων -->
            </div>
</form>


ακριβώς από πάνω έχω το drop menu 

 <select class="SelectOp" id="select" name="select" >
        <option selected value="0">x</option>
        <option value="1">y</option>
       <option value="2"> z</option>          
 </select>

και αυτό 

 $(document).ready(function(){
                $('#select').change(function(){
                    var select = $('#select').val();
                   
                    if(select != 0)
                    {
                        $.ajax({
                            type:'post',
                            url:'countRequest.php',
                            data:{data:select},
                            cache:false,
                            success: function(data) {
                               $('#txt').html(data);
                            }
                        });
                    }
});

και θέλω κάθε φορά που πατάω submit την φορμα μου να παραμένω εκεί που ήμουν.

Δημοσ.
<select class="SelectOp" id="select" name="select" >
<option value="0" <?php ($_POST['select'] == 0)? 'selected':'';?>>x</option>
<option value="1" <?php ($_POST['select'] == 1)? 'selected':'';?>>y</option>
<option value="2" <?php ($_POST['select'] == 2)? 'selected':'';?>> z</option> 
</select>

Αν φορτώνεις πάλι την σελίδα σου τότε το παραπάνω θα σου έχει επιλεγμένη την τιμή που διάλεξες στο post.

Αν θες να το κάνεις με javascript θα πρέπει να ελέγχεις τι value του έδωσες και να βάζεις το selected attribute το αντίστοιχο option

Δημοσ.

Φίλε δεν δουλεύει δεν μπορώ να καταλάβω το γιατί...

<form name="formfinally" id="formfinally" action="SendSubjFinally.php" method="POST" onsubmit="">
    
            <div align="left">
                    <select class="SelectOptionSubj" id="select" name="select" >
                      <option value="0" <?php ($_POST['select'] == 0)? 'selected':'';?>>x</option>
                      <option value="1"  <?php ($_POST['select'] == 1)? 'selected':'';?>>y</option>
                      <option value="2"  <?php ($_POST['select'] == 2)? 'selected':'';?>>z<option>           
                    </select>
            </div>
                   
            <div id="txt">
               <!-- παρουσίαση τον αποτελέσμάτων -->
            </div>
       
     <input  class="buttonDone" type="submit" name="submit" value"Submit style="cursor:pointer"/>
        
    </form>

 Σε σχέση με το ajax παραπάνω θα ήθελα μόλις πατάω το κουμπί submit το select να είναι ίδιο και από κάτω να έχω ενημερωμένα το success: function(data) {

$('#txt').html(data);
}

 

Σε ευχαριστώ πολύ.

Δημοσ.

Ναι είμαι μλκς, ξέχασα το echo :P

 <select class="SelectOptionSubj" id="select" name="select" >
     <option value="0" <?php echo ($_POST['select'] == 0)? 'selected':'';?>>x</option>
     <option value="1" <?php echo ($_POST['select'] == 1)? 'selected':'';?>>y</option>
     <option value="2" <?php echo ($_POST['select'] == 2)? 'selected':'';?>>z<option>           
 </select>

Για το ajax κάτι γρήγορο είναι το παρακάτω

$(document).ready(function(){
 	var select = "<?php echo (isset($_POST['select']))? $_POST['select'] : '0'; ?>"; 	
 	if(select != 0)
        {
            $.ajax({
                type:'post',
                url:'countRequest.php',
                data:{data:select},
                cache:false,
                success: function(data) {
                   $('#txt').html(data);
                }
            });
        }

    $('#select').change(function(){
        var select = $('#select').val();
       
        if(select != 0)
        {
            $.ajax({
                type:'post',
                url:'countRequest.php',
                data:{data:select},
                cache:false,
                success: function(data) {
                   $('#txt').html(data);
                }
            });
        }
	});
});

Κάνε το ajax μια function και usare τo όποτε θες.  άκυρο :D

Δημοσ.

Φίλε ώραιο αυτό σαν απάντηση αλλά πραγματικά δεν μπορώ να καταλάβω γιατί δεν δουλεύει. Απ' ότι έχω καταλάβει, φταίει το $_POST['select] είναι πάντα μηδέν κάθε φορά που κάνω submit. Το έλεγξα με 

 var select = "<?php echo (isset($_POST['select']))? $_POST['select'] : '0'; ?>";
 alert(select);

και τυπώνει 0. Κανονικά το $_POST['select'] δεν έχει το value του select;

 

Sorry που σε παιδεύω αλλά μου φαίνεται περιέργο! 

Δημοσ.

Τελικά φίλε βρήκα μία λύση αντί να χρησιμοποιώ το $_POST πέρασα την τιμή μου σε ένα $_SESSION αλλά άμα ήθελα να το έχω σε ένα ξεχωριστώ file.js η php δεν δουλεύει.

 

Πως μπορώ να το διορθώσω αν γίνεται;

Δημοσ.

Φίλε ώραιο αυτό σαν απάντηση αλλά πραγματικά δεν μπορώ να καταλάβω γιατί δεν δουλεύει. Απ' ότι έχω καταλάβει, φταίει το $_POST['select] είναι πάντα μηδέν κάθε φορά που κάνω submit. Το έλεγξα με 

 var select = "<?php echo (isset($_POST['select']))? $_POST['select'] : '0'; ?>";
 alert(select);

και τυπώνει 0. Κανονικά το $_POST['select'] δεν έχει το value του select;

 

Sorry που σε παιδεύω αλλά μου φαίνεται περιέργο! 

 

Αντικατέστησε το $_POST['select'] με το $_POST['data'].

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...