Hallo,
ich baue aktuell an einer Tracking Möglichkeit für Shops.
Es ist möglich ein JavaScript in einen Shop einzubinden, welches dann an meinen Server an eine PHP Datei Daten per GET sendet und dann ein Cookie erstellt, welches den Nutzer immer wieder identifizieren kann.
Leider habe ich Probleme beim anlegen von Cookies in der PHP.
Ich möchte möglichst kein jQuery (wegen der performance) für einen ajax Request benutzen, aber damit hat es aktuell funktioniert.. nur mit einen normalem HTTP Request nicht..
Das ist mein JavaScript welches in den Shop eingebunden wird
Das Script bindet dann folgende Datei ein, welche dann die Parameter an meinen Server per GET sendet.
Wenn ich die Scripte alle auf der selben Domain teste, dann funktioniert alles super und das Cookie wird auch von der PHP angelegt und korrekt ausgelesen.
Wenn ich aber die JS Scripte von einer anderen Domain auslese, dann funktioniert es nur mit der ersten jQuery AJAX Variante.. bei der zweiten jQuery Variante bekomme ich im CROME Debugger immer den Status "canceled"
und bei der dritten mit xmlHttp wird die PHP zwar korrekt aufgerufen und ich erhalte auch eine korrekte Response Cookies Mitteilung im Chrome, allerdings wird bei jedem Aufruf immer ein neuer Cookie angelegt, weil der zuvor angelegte nicht erkannt wird... O_o
Kann mir jemand erklären wieso das nicht geht und wie ich die Parameter noch anders übergeben kann außer mit jQuery...
ich baue aktuell an einer Tracking Möglichkeit für Shops.
Es ist möglich ein JavaScript in einen Shop einzubinden, welches dann an meinen Server an eine PHP Datei Daten per GET sendet und dann ein Cookie erstellt, welches den Nutzer immer wieder identifizieren kann.
Leider habe ich Probleme beim anlegen von Cookies in der PHP.
Ich möchte möglichst kein jQuery (wegen der performance) für einen ajax Request benutzen, aber damit hat es aktuell funktioniert.. nur mit einen normalem HTTP Request nicht..
Das ist mein JavaScript welches in den Shop eingebunden wird
PHP-Code:
<script type="text/javascript">
//<![CDATA[
var client = {
identifier: '1'
};
var product = {
identifier: "123456789"
};
(function() {
var s = document.createElement("script");
s.id = "ccretartg";
s.type = "text/javascript";
s.async;
s.src = ("https:" == document.location.protocol ? "https://" : "http://") + "www.website.de/test/tracking.js";
var l = document.getElementsByTagName("script");
var x = l[l.length-1];
x.parentNode.insertBefore(s, x);
})();
//]]>
</script>
PHP-Code:
var products_array=[];
products_array.push(product);
var products={};
products.product = products_array;
json_str_products = JSON.stringify(products);
json_str_client = client.identifier;
var url = "http://www.website.de/test/php/tracking.php";
var data = 'c='+json_str_client+'&p='+encodeURIComponent(json_str_products);
//funktioniert
$.ajax({
type: "GET",
url: url,
data: data,
dataType: "jsonp"
});
//funktioniert nicht!!!
$.ajax({
type: "GET",
url: url,
data: data,
dataType: "html"
});
//funktioniert auch nicht!!!
var xmlHttp = null;
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", url+"?"+data, false );
xmlHttp.send( null );
return xmlHttp.responseText;
Wenn ich aber die JS Scripte von einer anderen Domain auslese, dann funktioniert es nur mit der ersten jQuery AJAX Variante.. bei der zweiten jQuery Variante bekomme ich im CROME Debugger immer den Status "canceled"
und bei der dritten mit xmlHttp wird die PHP zwar korrekt aufgerufen und ich erhalte auch eine korrekte Response Cookies Mitteilung im Chrome, allerdings wird bei jedem Aufruf immer ein neuer Cookie angelegt, weil der zuvor angelegte nicht erkannt wird... O_o
Kann mir jemand erklären wieso das nicht geht und wie ich die Parameter noch anders übergeben kann außer mit jQuery...
Kommentar