JS en vreemde tekens in Ajax
Ik heb twee vragen:
1: Ik heb een Ajax script om content dynamisch te veranderen zonder page refresh. Alleen blokkeerd Ajax op de een of andere manier vreemde tekens. Het woord één wordt bijv. vervangen door een blokje. Is hier wat aan te doen?
2: Op de een of andere manier kan ik geen JS uitvoeren in een door Ajax geïnclude script. Ajax roept een php file aan en voorziet die van data. Nou geeft ie af en toe al blokjes terug in plaats van de tekst zonder wijziging te retourneren. Nou kan ik ook geen JS hierin uitvoeren. Een alert functie werkt bijv. al niet. JS binnen Ajax hebben we wel nodig, omdat een JS code een banner tussen de headlines moet plaatsen en eventuele ongewenste marge van een div, waar de banner wel-niet in staat, weg te halen.
Gewijzigd op 01/01/1970 01:00:00 door Vincent
Hoe staat het speciale teken opgeslagen? Staat een € gewoon als € opgeslagen of als € ?
op vraag 2 :
oncomplete : function(t)
{
alert("Afgerond") ;
alert(t.responseText);
}
Gat oplossing op vraag 2 nog eens proberen.
Dan heb je de oplossing voor vraag 1 ook. Ga ze als € (en vergelijkbaar) in de DB zetten. Probeer er maar eens 1. ben er voor 90% van verzekerd dat het werkt
Ja ok, maar is nog wel een flink karwei om een viertal uitgebreide CMSen daarop aan te passen. En alle alreeds bestaande data aan te passen.
Volgens mij kon je het ook oplossen door andere charsets ofzo in te stellen maar dat zou ik zo niet durven zeggen
Jacco schreef op 05.02.2008 14:39:
Dan heb je de oplossing voor vraag 1 ook. Ga ze als € (en vergelijkbaar) in de DB zetten. Probeer er maar eens 1. ben er voor 90% van verzekerd dat het werkt
dit is geen goede oplossing, sla altijd de originele data op in de database
Mr D schreef op 05.02.2008 15:28:
dit is geen goede oplossing, sla altijd de originele data op in de database
Jacco schreef op 05.02.2008 14:39:
Dan heb je de oplossing voor vraag 1 ook. Ga ze als € (en vergelijkbaar) in de DB zetten. Probeer er maar eens 1. ben er voor 90% van verzekerd dat het werkt
dit is geen goede oplossing, sla altijd de originele data op in de database
?? Volgens mij is het beter € in je database te zetten dan €.
Code (php)
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
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
<script>
var objHeadlines;
function headlines(type) {
var pagina = "ajax_headlines.php?tijd=" + Date() + "&type=" + type;
objHeadlines = createRequestObject();
objHeadlines.open("GET", pagina, true);
objHeadlines.onreadystatechange = headlinesDiv;
objHeadlines.setRequestHeader("Cache-Control", "no-cache");
objHeadlines.setRequestHeader("X_USERAGENT", "AjaxApplicatie");
objHeadlines.send(null);
}
function headlinesDiv() {
if (objHeadlines.readyState == 4 && objHeadlines.status == 200) {
if (objHeadlines.responseText) {
document.getElementById("headlines_ajax").innerHTML = objHeadlines.responseText;
}
}
}
</script>
<div class="boxTabsH">
<div id="tabHeadlines" class="tabHAlles"></div>
<div class="boxTabH6"></div>
<div class="boxTabH1" onClick="document.getElementById('tabHeadlines').className = 'tabHAlles'; headlines('alles');" onMouseOver="this.style.cursor='pointer';" onMouseOut="this.style.cursor='default';"></div>
<div class="boxTabH2" onClick="document.getElementById('tabHeadlines').className = 'tabHNieuws'; headlines('nieuws');" onMouseOver="this.style.cursor='pointer';" onMouseOut="this.style.cursor='default';"></div>
<div class="boxTabH3" onClick="document.getElementById('tabHeadlines').className = 'tabHArtikelen'; headlines('artikelen');" onMouseOver="this.style.cursor='pointer';" onMouseOut="this.style.cursor='default';"></div>
<div class="boxTabH4" onClick="document.getElementById('tabHeadlines').className = 'tabHVideos'; headlines('videos');" onMouseOver="this.style.cursor='pointer';" onMouseOut="this.style.cursor='default';"></div>
<div class="boxTabH5" onClick="document.getElementById('tabHeadlines').className = 'tabHScreens'; headlines('screens');" onMouseOver="this.style.cursor='pointer';" onMouseOut="this.style.cursor='default';"></div>
</div>
<div id="headlines_ajax">
</div>
var objHeadlines;
function headlines(type) {
var pagina = "ajax_headlines.php?tijd=" + Date() + "&type=" + type;
objHeadlines = createRequestObject();
objHeadlines.open("GET", pagina, true);
objHeadlines.onreadystatechange = headlinesDiv;
objHeadlines.setRequestHeader("Cache-Control", "no-cache");
objHeadlines.setRequestHeader("X_USERAGENT", "AjaxApplicatie");
objHeadlines.send(null);
}
function headlinesDiv() {
if (objHeadlines.readyState == 4 && objHeadlines.status == 200) {
if (objHeadlines.responseText) {
document.getElementById("headlines_ajax").innerHTML = objHeadlines.responseText;
}
}
}
</script>
<div class="boxTabsH">
<div id="tabHeadlines" class="tabHAlles"></div>
<div class="boxTabH6"></div>
<div class="boxTabH1" onClick="document.getElementById('tabHeadlines').className = 'tabHAlles'; headlines('alles');" onMouseOver="this.style.cursor='pointer';" onMouseOut="this.style.cursor='default';"></div>
<div class="boxTabH2" onClick="document.getElementById('tabHeadlines').className = 'tabHNieuws'; headlines('nieuws');" onMouseOver="this.style.cursor='pointer';" onMouseOut="this.style.cursor='default';"></div>
<div class="boxTabH3" onClick="document.getElementById('tabHeadlines').className = 'tabHArtikelen'; headlines('artikelen');" onMouseOver="this.style.cursor='pointer';" onMouseOut="this.style.cursor='default';"></div>
<div class="boxTabH4" onClick="document.getElementById('tabHeadlines').className = 'tabHVideos'; headlines('videos');" onMouseOver="this.style.cursor='pointer';" onMouseOut="this.style.cursor='default';"></div>
<div class="boxTabH5" onClick="document.getElementById('tabHeadlines').className = 'tabHScreens'; headlines('screens');" onMouseOver="this.style.cursor='pointer';" onMouseOut="this.style.cursor='default';"></div>
</div>
<div id="headlines_ajax">
</div>
Standaard wordt tab met alles getoond. Je kunt ook op de andere tabs klikken om content te filteren.
Er wordt een PHP file aangeroepen die resultaten uit de DB haalt en de rijen uitleest. Na de eerste 10 items wordt er een banner getoond.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div id="bannerCenter" class="bannerCenter">
<script language="JavaScript" type="text/javascript">
// aangeleverde JS code om banner te tonen
</script>
</div>
<script language="JavaScript" type="text/javascript">
function showBannerCenter() {
if (document.getElementById('bannerCenter').clientHeight <= 14) {
document.getElementById("skinBoxItemAdd").style.display = 'none';
document.getElementById("bannerCenter").style.display = 'none';
}
}
</script>
<script language="JavaScript" type="text/javascript">
// aangeleverde JS code om banner te tonen
</script>
</div>
<script language="JavaScript" type="text/javascript">
function showBannerCenter() {
if (document.getElementById('bannerCenter').clientHeight <= 14) {
document.getElementById("skinBoxItemAdd").style.display = 'none';
document.getElementById("bannerCenter").style.display = 'none';
}
}
</script>
De banner wordt niet getoonden de functie showBannerCenter() weigert ook dienst. De show functie is om te kijken of er wel of geen banner staat. Staat deze er niet, dan moeten twee divs verborgen worden om marges van de div weg te halen.
Hoe zorg ik er nu voor dat de banner wel getoond wordt tussen de headlines en dat de show functie goed wordt uitgevoerd?