2011-01-15 17 views
0

Fellow Coders,Teil url in CodeIgniter

so weit ich die CI-URL Helfer verwendet wurde mit base_url voll Urls zu bauen() und site_url(). Jetzt versuche ich auf eine Controller-Funktion innerhalb eines Javascript-Codes zuzugreifen, der als js-Datei geladen wird.

es ist eigentlich ein Ajax-Aufruf mit einem URL-Parametern, die so etwas wie sein sollten: jetzt

url : '/account/check_user' 

, es sei denn ich die URL mit dem vollständigen Pfad als in http://servername/ Präfix ..... nicht der Code.

alle Codebeispiele, die ich gesehen habe, verwenden die kurze Version der URL, aber ich kann es nicht zum Laufen bringen. Ich bin sicher, das ist wirklich einfach, aber ich stecke fest.

Ich könnte ein verstecktes Formularfeld an den JS-Code übergeben, aber ich würde es lieber nicht. irgendwelche Ideen?

dank

Antwort

3

Nun, ich neige dazu, auch absolute URLs und eine gute Praxis, die ich immer tun wird erklärt, ein JS-Variable zu verwenden:

var base_url = "<?php echo base_url(); ?>"; 

In:

  1. die head Abschnitt
  2. als die erste Zeile meiner script Tag
  3. wenn ich eine main.js-Datei, die dann in meinen Ansichten meist meines JS Code UND es immer eingeschlossen hält habe ich diese Zeile als erste in der Datei.

Danach verwenden Sie es wie:

url : base_url + 'account/check_user' 

Wie auch immer, der erste Schrägstrich / in Ihrer URL teilt den Browser auf die URL Wurzel zu gehen, die nicht der richtige Ort sein würden Ihre URL setzen rein! Beispiel:
Wenn sich Ihre CI-Installation im Ordner ci befindet und Ihre URL lautet: domain.com/ci/contorller/method/
Dann wird Ihre URL: domain.com/contorller/method/ !!

+0

hmmm, habe nicht daran gedacht, den variablen Einstellungscode im Skript-Tag innerhalb meiner Template-PHP-Datei hinzuzufügen !!! Ich musste site_url anstelle von base_url verwenden, um index.php als Teil der URL einzuschließen. Lustige Sache ist, dass ich base_url beim Laden von js und CSS-Dateien verwende und das funktioniert gut. Diese index.php-Datei gibt mir immer Ärger! Danke an @ifaour und @polarblau für die schnellen Antworten !!! Prost :) – djeetee

+0

Ich war gerade zu konzentriert auf den Code (und ein bisschen faul) in Entfernung von index.php schauen :) – djeetee

+0

@Djeetee: lol, ernsthaft ?! das erste Mal, als ich CI benutzte, sagte ich, dass WTF 'index.php' da oben ist! es ist einfach nur hässlich! : P – ifaour

3

ich normalerweise bin Zuweisung der base_url() zu einem JS-Variable richtig im Kopf, es zu allen Methoden zur Verfügung zu haben. So etwas wie diese

<script type="text/javascript"> 
    var baseUrl = "<?php echo base_url() ?>"; 
</script> 
+0

FYI Short-Tags sind jetzt veraltet, am besten verwenden freshnode

+0

Danke, Antwort aktualisiert. – polarblau

0

Sie sollten tatsächlich die site_url() - Funktion von CI verwenden. base_url() eignet sich zum Generieren einer URL für eine Ressource (z. B. Skript oder Stylesheet), aber site_url() ist die beste Wahl beim Generieren einer URL zu einer Seite innerhalb der App selbst, z. B. beim Erstellen einer Ajax-Anfrage .

So ist der beste Code würde zu verwenden, etwas in dieser Richtung sein:

<script type="text/javascript"> 
    var site_url = "<?php echo site_url() ?>"; 
</script>