Hallo mede leden,

Ik heb een vraag/probleem

Ik heb een radio button die werkt met een onChange

<input type="radio" name="dpoint" value="'.$fetch['dpoint'].'" onChange="Donate(this.value);" />


Nu heb ik ook het script opgezet

<script type="text/javascript">
		function Donate(id) {
			document.getElementById('box').style.display = 'block';
			$.ajax({
				url: 'ajax.php?a=donate&id=' + id,
				type: 'GET',
				dataType: 'php',
				timeout: 1000,
				success: function(response) {
					$("#box").html(response);
				}
			});
		}
		</script>


Als ik nu via firefox kijk in de browserconsole zie ik wel dat als ik op de radio button click de value wordt verzonden naar ajax.php

Nu heb ik in ajax.php dit neergezet om te testen
echo var_dump($_GET);


maar ik krijg geen response terug.

in het script waar de radio button staat heb ik ook de div
<div id="box"></div>


Iemand enig idee waar dit aan kan liggen?
dataType: 'php',

zou dat niet iets als "json" of "xml" moeten zijn?
hmm nee want de Ajax.php bestaat alleen uit php en geen json en ook geen xml

Het vreemde is dat ik deze script wel werkend heb gekregen op een andere site die geen gebruikt maakt van SEO via htaccess Dus misschien dat het daarmee te maken heeft.
PHP is een scripttaal, geen datatype.
PHP kan JSON, XML, html, jpeg, etc etc etc terug geven.

Het kan inderdaad wel zijn dat je door .htaccess rewriterules nooit in ajax.php terecht komt.

Probeer de url eens via een een browser aan te roepen en kijk evt eens in je logs.
Voor dit soort gevallen zijn 'Developer Tools' heel handig (In Chrome en FF: F12)
Hiermee kun je zien of er daadwerkelijk naar ajax.php wordt gepost, of dat deze een error (404?) geeft.
Ook kun je zien welke data er wordt verstuurd.

Als je al een vermoeden hebt dat het aan je htaccess ligt kun je daarin de betreffende regels even uitschakelen door er een # voor te zetten.
Hmm ik heb even een test file gemaakt test.php


<script type="text/javascript" src="/js/jquery-1.7.2.min.js"></script>
<script>
		function Donate(dpoint) {
			document.getElementById('box1').style.display = 'block';
			$.ajax({
				url: 'ajax.php?a=donate&id=' + dpoint,
				type: 'GET',
				dataType: 'php',
				timeout: 1000,
				success: function(response) {
					$("#box1").html(response);
				}
			});
		}
</script>

<form method="post" action="">
<input type="radio" name="dpoint" value="1" onChange="Donate(this.value);" /><br />
<input type="radio" name="dpoint" value="2" onChange="Donate(this.value);" /><br />
</form>

<div id="box1"></div>


er wordt geen gebruikt gemaakt van htaccess.

Dev tool FF F12 geeft geen error weer. er wordt wel gepost naar ajax.php

Zoals al is gezegd, staat je datatype nog steeds verkeerd. PHP bestaat niet.

"dataType (default: Intelligent Guess (xml, json, script, or html))"
Is wel vreemd want op een andere site gebruik ik precies hetzelfde datatype en daar werkt het wel.

Hmm heb datatype naar HTML gezet en werkt nu wel op testing omgeving.

Wat ik mij dan af vraag is waarom die op de ene site met datatype php het wel doet maar op testing omgeving dan weer niet. hmm. Zal eens onderzoeken.
maar wat nu als je het stuk ajax even overboord zet en ter testing ende vermaeck de url gewoon in een browser aanroept?
Dat werkt wel maar het probleem is gevonden

Dit is wat ik nu gebruik jquery-1.7.2.min.js en die werkt niet met datatype php
jquery-1.2.6.min.js deze werkt wel met datatype php

Bijde geven ze hetzelfde resultaat terug. In dit geval moet ik dus de nieuwe jquery script gebruiken.
Mooi dat het nu werkt. Test omgeving en live omgeving zou geen verschil mogen maken omdat Javascript client side wordt uitgevoerd dus niet wordt bepaald door de server.
Het zou wel logisch zijn als je een foute datatype meestuurt, dat ie dan de default gebruikt, misschien dat ie ook niet werkt?

Edit: 1.2 is wel erg oud :) We zijn intussen al bij 1.11.0
Ik raad aan deze laatste versie te gebruiken. Eventueel i.c.m. 2.1.0.

Reageren