edit-in-place και update βάσης δεδομένων

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

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

Απάντηση
alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

edit-in-place και update βάσης δεδομένων

Δημοσίευση από alou » 13 Ιουν 2013 09:06

Στην php κάνεις κάτι echo?

και αφού το data είναι text, τσέκαρε το data τι είναι, όχι το data.success (αυτό θα ίσχυε αν ήταν json object και είχες κάνε echo json encoded array στην php).

οπότε if (data == 'everything OK') κλπ στο js κομμάτι και μην ξεχάσεις echo $success στην php.

τώρα λογικό να είναι undefined.

Serghio
Δημοσιεύσεις: 451
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

edit-in-place και update βάσης δεδομένων

Δημοσίευση από Serghio » 13 Ιουν 2013 21:05

προχωράω στο να παραθέσω κώδικα κατευθείαν:

κώδικας js:

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

  $.ajax({
      type: "POST",
      url: "testajax.php",
      dataType:'text',
      cache:false,
      data:{"name":name,"lastname":lastname,"btype":btype},//το πρόβλημα έχει να κάνει με την μεταβλητή btype---το πρόβλημα είναι ότι είναι κενή
      success:function(data){
             if (data=='1')
               {$('#loadserver').html("Όλα Οκ!!!");}
               else
               {alert('error');}
              } 
        
       
             });
κωδικας PHP, το script όπως καταλάβατε λέγεται testajax.php:

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

         $name=$_POST['name'];
         $lastname=$_POST['lastname'];
         $btype=$_POST['btype'];
        
           $result = $conn->query('update busines_users
            set name="'.$name.'",lastname="'.$lastname.'",bus_userstype="'.$btype.'"
            where crID="12"');
      
            if($result)
              { $success='1'; }
             
              else
              {$success='0';}
               
echo $success;


To update γινεται κανονικά...όταν τρέχει ο κώδικας αυτό που βγαίνει είναι ένα alert box που περιέχει το μήνυμα error και φαίνεται από την ajax function(πριν έβγαζε undefined το alert box) παραπάνω, στο conditional.

Έχω βάλει μέσα στον κώδικα της js(είναι μετά το ajax function) ένα console.log(data) εδώ...στην error console του chrome βλέπω αυτό:
Uncaught ReferenceError: data is not defined

Oπότε υπάρχει πρόβλημα με το data...τι όμως ακριβώς δεν μπορώ να καταλάβω.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

edit-in-place και update βάσης δεδομένων

Δημοσίευση από alou » 14 Ιουν 2013 07:22

Έξω από το ajax function φυσικά και είναι undefined το data (out of scope). Κάνε
success:function(data){ alert(data);}
να δεις τι έχει το data

και δοκίμασε το conditional με
if (data==='1')

αφού είναι string το 1

Serghio
Δημοσιεύσεις: 451
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

edit-in-place και update βάσης δεδομένων

Δημοσίευση από Serghio » 14 Ιουν 2013 18:20

ναι ζήτω ήταν αυτό...
δεν υπήρχε πρόβλημα με το conditional τελικα( και αν είναι === ή ==).
Αυτό που βήθησε ήταν το alert(data).
To πρόβλημα ήταν πως το αρχείο PHP που στέλνονταν τα δεδομένα είχε HTML(body tag, html tag...head section).

Μόλις τα έβγαλα... λύθηκε το πρόβλημα.Δεν είχα δώσει σημασία ότι στο δικό σου script απουσίαζε παντελώς η HTML.

Τώρα αντιμέτωπίζω κάτι άλλο βέβαια...οπότε θα επανέλθω...στο ίδιο post γιατί είναι απολύτως σχετικό.

Κατα τα άλλα ευχαριστώ για την βοήθεια και κυρίως για την ΥΠΟΜΟΝΗ.

Serghio
Δημοσιεύσεις: 451
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

edit-in-place και update βάσης δεδομένων

Δημοσίευση από Serghio » 17 Ιουν 2013 11:39

Λοιπον έκανα κάποιες αλλαγές στο update query ωστε να συμπεριλαμβάνει και το e-mail το οποιο e-mail το έχω περάσει πρώτα σε μια session variable ώστε να "περνάει" από σελίδα σε σελίδα...και εδώ αρχίζει το πρόβλημα.

Στην σελίδα που στέλνονται τα δεδομένα με ajax(testajax.php) υπάρχει αυτή η session variable και περνάει σαν argument στην function που πραγματοποιεί το update-δηλαδή:

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

 $nme=mysql_real_escape_string($_POST['name']);
      $lstname=mysql_real_escape_string($_POST['lastname']);
      $btype= mysql_real_escape_string($_POST['btype']); 
$email=$_SESSION['valid_user'];
         
   if(ajax_update_personal($nme,$lstname,$btype,$email))
       {$success='1';}
       else
        {$success='0';}
Τα υπόλοιπα arguments είναι και αυτά δεδομένα που στέλνονται με ajax(δείτε τα προηγούμενα posts).

To $email όμως στο οποίο περνάει η session variable(εφόσον αυτή όντως είναι το email του χρήστης) χαρακτηρ'ιζεται ως undefined...γιατί αυτό;

Η session variable που απεικονίζεται παραπάνω ΔΕΝ στέλνεται με ajax απλώς περνάει από PHP script σε PHP script...βέβαια νομίζω ότι αυτό το τελευταίο δεν γίνεται εδω πέρα, δεν ξέρω γιατί...αλλά αυτή πρέπει να είναι η αιτία του προβλήματος.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

edit-in-place και update βάσης δεδομένων

Δημοσίευση από alou » 17 Ιουν 2013 12:09

Στη σελίδα από την οποία κάνεις το ajax post υπάρχει το $_SESSION['valid_user'] και δεν είναι undefined;

Στο testajax.php έχεις session_start(); στην αρχή?

Ότι θα πέρναγε με κανονικό post θα πρέπει να περάσει και με ajax post, δεν αλλάζει το session id ή κάτι άλλο οπότε μάλλον κάτι από τα δυο παραπάνω φταίει, από όσο φαντάζομαι.

Serghio
Δημοσιεύσεις: 451
Εγγραφή: 08 Φεβ 2011 19:20
Τοποθεσία: Περιστέρι

edit-in-place και update βάσης δεδομένων

Δημοσίευση από Serghio » 17 Ιουν 2013 12:28

alou έγραψε:
Στο testajax.php έχεις session_start(); στην αρχή?
Eίχες δίκιο, το παραπάνω έφταιγε...thanks.
Απορώ πως το είχα ξεχάσει.

Απάντηση

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

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

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