ShopPilot > Ajax Fragen

Ajax-Anwendungen auf https-Seiten

(1/1)

dobra:
Werden Ajax Scripte (z.B. ajaxsearch) auf https-Seiten aufgerufen funktionieren diese nicht und es kommt es zu einem
NetworkError: 500 Internal Server Error - http://www....../cgi-bin/iboshop.cgi?ajax<Seitennummer>

Das kann man mit einer kleinen Änderung in ajax.ipl vermeiden:

Original-Script

--- Code: ---sub print_scripts {
$out .= qq|
<script type="text/javascript">
// Server-URL für die Ajax-Abfragen
 var myinterface = "__xxpath__?ajax$gl_ajax_pageNr,__xxsession__";
</script>
<script type="text/javascript" src="$gl_path_to_ajax/json2.js"></script>
<script type="text/javascript" src="$gl_path_to_ajax/http/Request.js"></script>
<script type="text/javascript" src="$gl_path_to_ajax/jquery.js"></script>
<link rel="stylesheet" href="$gl_path_to_ajax/css/ajax.css">
|;

main::mprint $out;
}
--- End code ---

ersetzen mit

--- Code: ---sub print_scripts {
my $ajaxurl = qq|
    <script type="text/javascript">
    // Server-URL für die Ajax-Abfragen
      var myinterface = "__xxpath__?ajax$gl_ajax_pageNr,__xxsession__";
    </script>
|;

if ($main::secure) {
$ajaxurl = qq|
<script type="text/javascript">
// Server-URL für die Ajax-Abfragen
 var myinterface = "__xxspath__?ajax$gl_ajax_pageNr,__xxsession__";
</script>
|;
}

$out .= qq| $ajaxurl

    <script type="text/javascript" src="$gl_path_to_ajax/json2.js"></script>
    <script type="text/javascript" src="$gl_path_to_ajax/http/Request.js"></script>
    <script type="text/javascript" src="$gl_path_to_ajax/jquery.js"></script>
    <link rel="stylesheet" href="$gl_path_to_ajax/css/ajax.css">
|;

main::mprint $out;
}
--- End code ---

Dadurch werden alle Ajax-Scripte auf https-Seiten automatisch mit

https://www.<SSL-Adresse>/cgi-bin/iboshop.cgi?ajax<Seitennummer>

eingebunden.

Ergebnis: alle Ajax-Anwendungen funktionieren auch auf https-Seiten  ;D

Diese Änderung ist z.B. unbedingt nötig, wenn man bei der neuen Adressverwaltung das "alternative Lieferadresse speichern" für eingeloggte Kunden verwendet, da das ja im Bestellablauf = i.d.R. nur auf https-Seiten passiert.


Linkback: https://www.shoppilot.net/pf/index.php?topic=1637.0

ahe:
Eine andere Möglichkeit ist es, 2 globale Variablen anzulegen.
Zb in der stdall.ipl damit die Variablen in allen Scripten zur Verfügung stehen.


--- Code: ---<!--spmacro:module(globals)
our $CATDIR = $ssp::catalog_abs;
our $CGI = $ssp::xxpath;

# if (main::is_ssl()) { ## funktioniert so nicht im alternativen Bestellablauf
if ($ENV{HTTPS} eq 'on') {
    $CATDIR = $ssp::sec_catalog_abs;
    $CGI = $ssp::xxspath;
}
-->
--- End code ---

Dann könnte die oben angeführte Funktion so geschrieben werden und man hätte die extra if-Bedingung gespart:


--- Code: ---sub print_scripts {
$out .= qq|
<script type="text/javascript">
// Server-URL für die Ajax-Abfragen
 var myinterface = "$globals::CGI?ajax$gl_ajax_pageNr,__xxsession__";
</script>
<script type="text/javascript" src="$gl_path_to_ajax/json2.js"></script>
<script type="text/javascript" src="$gl_path_to_ajax/http/Request.js"></script>
<script type="text/javascript" src="$gl_path_to_ajax/jquery.js"></script>
<link rel="stylesheet" href="$gl_path_to_ajax/css/ajax.css">
|;

main::mprint $out;
}
--- End code ---

Mit $globals::CATDIR kann man dann zum Beispiel Bilder und CSS-Dateien verlinken.
Zb main::mprint("$globals::CATDIR/bilder/testbild.png");

dobra:
Danke für das Script !
.... und bitte das auch in die DOKU aufnehmen.
ein "ottonormaluser" wie ich kann sowas ja nicht wissen ;)

Navigation

[0] Themen-Index

Go to full version
Powered by SMFPacks SEO Pro Mod | Sitemap