Πως θα διαβάσω από το url μετά το #

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

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

Απάντηση
heisenberg
Δημοσιεύσεις: 88
Εγγραφή: 28 Αύγ 2009 15:15

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από heisenberg » 13 Σεπ 2010 15:26

Καλημέρα,
θέλω να πάρω σε μια μεταβλητή από το url έστω π.χ.
http://www.site.com/index.php?a=test#section1

να διαβάσω μετά το # δηλάδή να έχω σε μια μεταβλητή το section1

Δοκίμασα διάφορα. π.χ. Το $_SERVER['REQUEST_URI'] δεν διαβάζει μετά το #
Γυρνάει το /index.php?a=test

επίσης δοκίμασα όταν πατάω το εσωτερικό λινκ για να παει στο section1 να ξαναφορτώνω τη σελίδα (αν και δν ειναι γενικά θεμιτό) για να ξαναδιαβάσει τη σελίδα με το #section1 μέσα μήπως και παίζει ρόλο. αλλά παλι τίποτα

Πως μπορώ να το διαβάσω;

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από nbc » 13 Σεπ 2010 15:52

Οι browsers δεν στέλνουν αυτην την πληροφορία (fragment) στον server. Αν τη χρειάζεσαι, θα πρέπει να την ανάγεις σε μια μεταβλητή του query:

ΠΧ, το url

http://www.site.com/index.php?a=test#section1

να γίνει

http://www.site.com/index.php?a=test&fr ... 1#section1

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από Rapid-eraser » 13 Σεπ 2010 15:55

Θα σε απογοητεύσω αλλά δυστυχώς καμία server side γλώσσα προγραμματισμού δεν μπορεί να διαβάσει άμεσα οτιδήποτε βρίσκετε μετά το #.

Αυτό συμβαίνει γιατί το well built url τελειώνει πριν το χαρακτήρα του sharp (#) και το υπόλοιπο χρησιμοποιείται μόνο από τον browser σαν anchor.

Το μόνο που μπορείς να κάνεις είναι να τσιμπήσεις με javascript το anchor και με κάποιο xhr call (ajax ίσως) ή redirect να κάνεις ότι θες να κάνεις στην συνέχεια αλλά σε δεύτερο βήμα πάντα.

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


if (window.location.match('#')) { 
// bre8ike to #
var anchor = myFile.split('#')[1];
// Sto anchor pleov iparxei oti iparxei meta to #
alert(anchor);

}



Θα σου συνιστούσα να το γράψεις στην μορφή #section-1 ώστε με ένα απλό split με βάση το - να έχεις τα 2 parts που πιθανών σου χρειάζονται παρακάτω.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

heisenberg
Δημοσιεύσεις: 88
Εγγραφή: 28 Αύγ 2009 15:15

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από heisenberg » 13 Σεπ 2010 16:24

nbc έγραψε:Οι browsers δεν στέλνουν αυτην την πληροφορία (fragment) στον server. Αν τη χρειάζεσαι, θα πρέπει να την ανάγεις σε μια μεταβλητή του query:

ΠΧ, το url

http://www.site.com/index.php?a=test#section1

να γίνει

http://www.site.com/index.php?a=test&fr ... 1#section1
Αυτό είναι μια λύση που θα δουλέψει αλλά ήθελα να απο φύγω να ξαναφορτώνω τη σελίδα.

heisenberg
Δημοσιεύσεις: 88
Εγγραφή: 28 Αύγ 2009 15:15

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από heisenberg » 13 Σεπ 2010 16:32

Δοκίμασα διάφορα αλλά ακόμα δεν μου τρέχει. όλημέρα παιδεύομαι με αυτό

ακόμα κι αυτό με το javascript δεν κάνει ουτε το αλερτ.

Επειδή javascript ξέρω ελάχιστα μπορεί να γράφω κάτι λάθος. μήπως μπορείτε να μου δώσετε λίγο περισσότερες λεπτομέριες;


Βασικά στο site επιλέγει ο χρήστης χώρα οπότε φωρτώνει μια σελίδα (www.aaaaa.com/index.php?country=Ireland) που έχει όλες τις εγγραφές αυτής της χώρας κατηγοριοποιημένες ανα πόλη. Στην αρχή της σελίδα έχω μια γρήγορη λίστα με όλες τις διαθέισμες πόλεις για να παταει και να πηγαινει γρήγορα σε αυτό το μέρος της σελίδας.

Όταν γίνεαι αυτό σε ένα κουτάκι δίπλα γράφω τι έχει επιλέξει και θα ήθελα αυτό να γραφττεί και στο <title> της σελίδας.

Ελπίζω αυτά να σας βοηθησαν να καταλάβετε τι θέλω να κάνω.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από Rapid-eraser » 13 Σεπ 2010 16:58

Αν είναι φορτωμένα όλα στην ίδια σελίδα τότε αυτό που θες λέγετε named anchor απλά βάλε ένα <a name="poli">POLI</a> , οπότε ένα Link της μορφής

www.aaaaa.com/index.php?country=Greece#Athens

θα σε πάει κατευθείαν στο anchor με name="Athens"

Άρα στο πάνω μέρος που θα έχεις την μίνι λίστα θα βάλεις τα anchors

και στο κάτω μέρος εκεί που θα ξεκινάει η κάθε πόλη θα βάλεις τα named anchors

Το παραπάνω δεν έχει σχέση με php είναι καθαρά θέμα html.


Η λύση που έδωσα εγώ θα είχε νόημα αν ήθελες να επεξεργαστείς προγραμματιστικά την πληροφορία αυτή και όχι απλά να πας σε κάποιο άλλο μέρος της σελίδας.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

heisenberg
Δημοσιεύσεις: 88
Εγγραφή: 28 Αύγ 2009 15:15

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από heisenberg » 13 Σεπ 2010 17:01

Αυτό που περιγτράφεις έχω κάνει ηδη.

κι θέλω όταν πατάει την πόλη και μετά να συμβάινουν όα περιέγραψα

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από Rapid-eraser » 13 Σεπ 2010 17:13

Έχεις δίκιο δεν διάβασα καλά αυτό που έγραψες για το title sorry.

Θέλει λίγο δουλίτσα παραπάνω σε javascript για να γίνει αυτό που θες.

Σου περιγράφω τι πρέπει να γίνει με κώδικα.

1) αν έχει γίνει direct hit πάνω στην σελίδα με anchor να γίνει parse και να αλλάξει ο τίτλος.
2) αν γίνει click σε κάποιο από τα link της λίστας να παίξει το named anchor και ταυτόχρονα να γίνει διόρθωση του τίτλου

Σε κάθε περίπτωση το πρόβλημα είναι καθαρά javascript οπότε το μεταφέρω στην σωστή κατηγορία και επιστρέφω με τον κώδικα που σου χρειάζεται.
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από Rapid-eraser » 13 Σεπ 2010 17:30

Έτοιμος και ο κώδικας:

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


<script src="http&#58;//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$&#40;function&#40;&#41;&#123;// Otan n jquery eivai etoimi &#40; opote 8a exei fortosei kai to DOM&#41; 

if &#40;window.location.toString&#40;&#41;.match&#40;'#'&#41;&#41; &#123; 
  document.title =  'Epilegmevi poli&#58; ' + window.location.toString&#40;&#41;.split&#40;'#'&#41;&#91;1&#93;
&#125;


$&#40;'.traplink'&#41;.click&#40;function&#40;&#41;&#123;
document.title =  'Epilegmevi poli&#58; '+this.href.toString&#40;&#41;.split&#40;'#'&#41;&#91;1&#93;
return true;
&#125;&#41;;


&#125;&#41;;

</script>

<a href="#Patra" class="traplink" style="display&#58;block">Patra</a>
<a href="#Athens" class="traplink" style="margin-bottom&#58;10000px;display&#58;block">Athens</a>

<a name="Athens" style="margin-bottom&#58;500px;display&#58;block">############# ATHENS</a>

<a name="Patra">############# Patra</a>



Έχω κάνει χρήση και του framework jQuery για να αποφύγω τον πιο σύνθετο κώδικα στο onClick event.


Αν κάνεις direct hit με το σωστό anchor εκτός ότι θα σε πάει στο named anchor θα αλλάξει και ο τίτλος.

Παρόλα αυτά το script δεν είναι bullet proof, πχ αν κάνεις scroll στην σελίδα ο τίτλος θα δείχνει λάθος πόλη , αυτό λύνεται εύκολα με κάποιο plug in της jquery Που θα κάνει trigger με βάση το vertical scroll point .
Τελευταία επεξεργασία από το μέλος Rapid-eraser την 13 Σεπ 2010 17:34, έχει επεξεργασθεί 1 φορά συνολικά.

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

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από fafos » 13 Σεπ 2010 17:32

an exo katalavei sosta.. mporeis na pareis to onoma ths polhs me ajax kai session...

kaleis to parakato script:

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

<script type="text/javascript" src="http&#58;//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

<script>
$&#40;function &#40;&#41; &#123;

$&#40;'a&#91;rel=getcity&#93;'&#41;.click&#40;function&#40;&#41;
&#123;
        
        var tip = $&#40;this&#41;.attr&#40;'title'&#41;;    
        
        $&#40;this&#41;.attr&#40;'title',''&#41;;

    $.post&#40;"backend.php", &#123;"city"&#58; tip&#125;&#41;;
&#125;&#41;;
&#125;&#41;;

</script>

sthn lista me tis poleis prostheteis ena rel=getcity kai title="onoma polhs" :

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

<a href="#1" rel="getcity" title="Athens">Athens</a> <a href="#1" rel="getcity" title="Salonica">Salonica</a>


dhmiourgeis ena aplo php script (backend.php) opou me to analogo click pairnei kai to onoma ths polhs (apo to title) se session:

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

<?session_start&#40;&#41;;
    $_SESSION&#91;'city'&#93; = $_POST&#91;'city'&#93;;
?>

PROSOXH!! se OLES tis selides kai prin oiandhpote kodika prepei na exeis auto:

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

<?session_start&#40;&#41;;?>
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από dva_dev » 13 Σεπ 2010 18:28

Το http://www.site.com/index.php?a=test#section1 κάνε το http://www.site.com/index.php?a=test%23section1 με την encodeURIComponent.

Αν θέλεις να περάσεις και τίποτα άλλους περίεργους χαρακτήρες σαν δεδομένα στις παραμέτρους στο url πρέπει να τους κωδικοποιήσεις κατάλληλα.

heisenberg
Δημοσιεύσεις: 88
Εγγραφή: 28 Αύγ 2009 15:15

Πως θα διαβάσω από το url μετά το #

Δημοσίευση από heisenberg » 16 Σεπ 2010 21:02

Ευχαριστώ :D
Δεν υπάρχει καλύτερο πράγμα από το να έχεις γυναίκα δικηγόρο ...

Απάντηση

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

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

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