AJAX werkt niet zonder www

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • S_tef
  • Registratie: December 2004
  • Laatst online: 18-09 16:13
Ik heb een probleem met mijn AJAX object (andere objecten die ik van internet pluk hebben dit ook, grote frameworks niet getest).
Als ik mijn website zonder www aanroep, zie ik in Firebug wel de AJAX request lopen, maar response = '' (niets).

De status code is dan ook 0 ipv 400.
Ook door het alerten van de response krijg ik '' terug.

Wat ik zou kunnen doen is door het server-sided op te lossen door hem altijd door te sturen naar www.domein.nl/*, maar dat wil ik liever niet.

Iemand een ideetje?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
function ajaxObj ()
{
    var activeXObjs = [
        'Microsoft.XMLHTTP',
        'MSXML2.XMLHTTP.5.0',
        'MSXML2.XMLHTTP.4.0',
        'MSXML2.XMLHTTP.3.0',
        'MSXML2.XMLHTTP'
    ];
    

  for( var i = 0; i < activeXObjs.length; i++ )
  {
    try
    {
      return new ActiveXObject( activeXObjs [i] );
    }
    
    catch (e)
    {}
  } 
    
    try 
    {
        return new XMLHttpRequest ();
    }
    
    catch (e)
    {}

    return false;
}

function request (url, div, callback)
{
    var obj = ajaxObj ();
    if (!obj)
    {
        return false;
    }

    obj.onreadystatechange = function ()
    {
        if (obj.readyState == 4 && obj.status == 200)
        {
          if (div)
          {
            __set (div, obj.responseText);
          }
          
          if (callback)
          {
        eval (callback);
      }
        }
    }
    
    obj.open ('GET', url, true);
    obj.send (null);
}

Hierboven de code, aldus niet geheel relevant.

Zie op Google enkele mensen met dezelfde problemen zonder directe oplossing.

Alvast bedankt.

Acties:
  • 0 Henk 'm!

  • b19a
  • Registratie: September 2002
  • Niet online
Wat is de waarde van url, als je je domein zonder www. aanspreekt? Staat er dan niet per ongeluk www. voor?

[ Voor 23% gewijzigd door b19a op 19-08-2009 19:50 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Als je je website laadt van domain.nl (dus zonder www) dan moeten je Ajax-requests ook via domain.nl lopen (dus ook zonder www).

Verder: vervang je ajaxObj() eens door iets als dit, nu probeer je eerst nodeloos proprietary zut uit voordat je de standaard methode uitvoert die ondertussen al door alle major browsers ondersteund wordt:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if (!window.XMLHttpRequest)
{
    window.XMLHttpRequest = function()
    {
        // http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx
        var types = [
            'MSXML2.XMLHTTP.6.0',
            'MSXML2.XMLHTTP.3.0'
        ];

        for (var i = 0; i < types.length; i++)
        {
            try
            {
                return new ActiveXObject(types[i]);
            }
            catch(e) {}
        }

        return undefined;
    }
}

hiermee kan je gewoon overal ipv
JavaScript:
1
var obj = ajaxObj();

gewoon dit doen:
JavaScript:
1
var obj = new XMLHttpRequest();

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • ieperlingetje
  • Registratie: September 2007
  • Niet online
Ajax laat je niet toe te communiceren met andere (sub)domeinen, dus moet je zorgen dat de requests telkens naar hetzelfde domein gebeuren als waar het script uitgevoerd wordt.

Tijdmachine | Nieuws trends


Acties:
  • 0 Henk 'm!

  • S_tef
  • Registratie: December 2004
  • Laatst online: 18-09 16:13
Vergeten te vertellen.
Een request roep ik gewoon aan als request('bestand.php', 'callbackDIV'); (dus niet de volledige url).

Acties:
  • 0 Henk 'm!

  • ieperlingetje
  • Registratie: September 2007
  • Niet online
en staat je javascript in een externe file? zoja, is dat ook hetzelfde domein?

Tijdmachine | Nieuws trends


Acties:
  • 0 Henk 'm!

  • S_tef
  • Registratie: December 2004
  • Laatst online: 18-09 16:13
Crisp, bedankt voor je advies. Is inderdaad een stuk beter (qua code).
Echter verandert dit niets, de request gaat namelijk ook gewoon lopen alleen is de response niets.

AJAX object staat inderdaad in een extern bestand wat ik gewoon aanroep via bestand.js (<script type="text/javascript" language="javascript" src="includes/js/ajax/object.js"></script>).

edit
Het aanroepen via een volledige url verandert niets.

[ Voor 8% gewijzigd door S_tef op 19-08-2009 19:56 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Als firefox niet een foutmelding geeft, is alles goedgegaan. Dan ligt het probleem dus serverside, in de console van firebug (of tools->error console) kan je die foutmeldingen bekijken. Kijk ook in je access log naar de grootte van het bestand dat je webserver terugstuurt.

Acties:
  • 0 Henk 'm!

  • S_tef
  • Registratie: December 2004
  • Laatst online: 18-09 16:13
Mmm ik zie nu (waarschijnlijk komt dat door het vervangen van de functie van Crisp).
Dat de request nu rood worden (mislukken), als ik de website zonder www aanroep.

edit
Het werkt :D.

Ik ging even een aparte testcase maken en zag dat het toen wel werkte.
Heb toen langzaam alles opgebouwd en toen mijn template erin gegooid waarin een base href staat (met altijd www!!!)... En dat is dus de fout, als je niet op het www zit moet de www weg.

Bedankt voor de snelle reacties!

[ Voor 49% gewijzigd door S_tef op 19-08-2009 20:14 ]


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Overigens, als je het niet-www adres laat 301-redirecten naar het www-adres, dan ben je er ook vanaf. Bijkomend voordeel is dat een zoekmachine dan nog maar 1 versie van je site indexeert en dus niet meer een penalty zou kunnen rekenen voor "dubbele" content ;)

日本!🎌

Pagina: 1