11544 sujets

JavaScript, DOM et API Web HTML5

Voilà, j'utilise le jquery pour un projet...

Tout marchait très bien au niveau du javascript, j'avais un problème dans le fichier php de l'ajax que j'ai corrigé, sans toucher au javascript pourtant.

L'ajax fonctionne maintenant parfaitement à part, mais le javascript marche plus du tout...

L'erreur retourné par la console d'erreur d'opéra est du chinois pour moi, je suppose que ça un rapport avec mon fichier jquery, mais moi ça m'aide vraiment pas :

[21/08/2012 11:57:32] JavaScript -  http://www.yuimen.com/v2/adm.nvlemap.php
 
Event thread: readystatechange
Uncaught exception: TypeError: Cannot convert 'a' to object
Error thrown at line 2, column 23090 in <anonymous function: each>(a, c, d) in  http://www.yuimen.com/v2/javascript/lib-jquery.js:
 
    var f,g=0,h=a.length,i=h===b||e.isFunction(a);
called from line 12, column 2 in retour_php(retour) in  http://www.yuimen.com/v2/javascript/nvlemap.js:
 
    $.each(retour,function(attribut,valeur){
called via Function.prototype.apply() from line 2, column 29361 in <anonymous function: f.Callbacks>(b, f) in  http://www.yuimen.com/v2/javascript/lib-jquery.js:
 
    if(c[m].apply(b,f)===!1&&a.stopOnFalse)
called from line 2, column 30904 in <anonymous function: fireWith>(b, c) in  http://www.yuimen.com/v2/javascript/lib-jquery.js:
 
    d&&(j?a.once||d.push([b,c]) [decu]!a.once||!e)&&o(b,c));
called from line 4, column 24458 in w(a, c, l, m) in  http://www.yuimen.com/v2/javascript/lib-jquery.js:
 
    v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))
called from line 4, column 36227 in <anonymous function: d>(a, e) in  http://www.yuimen.com/v2/javascript/lib-jquery.js:
 
    m&&g(j,k,m,l)



Mon appel javascript se fait sur une image au sein d'un tableau, voilà le code qui génère le tableau (enfin le bout qui nous concerne) :
<?xml version="1.0" encoding="iso-8859-1" ?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><body>
<span id='carte'>1</span> - <span id='altitude'>0</span>
<table>
	<tr>
		<td width='40' height='40' id='td-5-22' style="background-image:url(map/1/0/5-22.png)">
		</td>
		<td width='40' height='40' id='td-6-22' style="background-image:url(map/1/0/6-22.png)">
		</td>
		<td width='40' height='40' id='td-7-22' style="background-image:url(map/1/0/7-22.png)">
		</td>
		<td width='40' height='40' id='td-8-22' style="background-image:url(map/1/0/base3.png)">
			<img src='images/transparent.png' class='basemodifiable' id='img-8-22' />
		</td>
		<td width='40' height='40' id='td-9-22' style="background-image:url(map/1/0/base1.png)">
			<img src='images/transparent.png' class='basemodifiable' id='img-9-22' />
		</td>
		<td width='40' height='40' id='td-10-22' style="background-image:url(map/1/0/base1.png)">
			<img src='images/transparent.png' class='basemodifiable' id='img-10-22' />
		</td>
		<td width='40' height='40' id='td-11-22' style="background-image:url(map/1/0/base1.png)">
			<img src='images/transparent.png' class='basemodifiable' id='img-11-22' />
		</td>
	</tr>
</table>
</body>
<script type='text/javascript' src='javascript/lib-jquery.js'></script>	
<script type='text/javascript' src='javascript/nvlemap.js'></script>
</html>



Le fichier javascript :

$('.basemodifiable').bind("click", function(){
	var idCase = $(this).attr("id");
	var decoupe = idCase.split("-"); 
	var coordX = decoupe[1];
	var coordY = decoupe[2];
	var idcarte = $('#carte').text();
	var altitude = $('#altitude').text();
	function retour_php(retour)
	{
	// traitement sur les données ici
		var jayson=new Array();
		$.each(retour,function(attribut,valeur){
			jayson[attribut]=valeur;
		})
		var idfond= "td-"+coordX+"-"+coordY;
		var bgdessin="map/"+idcarte+"/"+altitude+"/base"+jayson['dessin']+".png";
		$('#'+idfond).css("background-image", "url("+bgdessin+")"); 
	}
	$.ajax({
		url:"ajax.nvlemap.php",
		type:'POST',
		data: "choix=2&X="+coordX+"&Y="+coordY+"&idcarte="+idcarte+"&altitude="+altitude,
		dataType: 'json',
		success: retour_php,
	});
});


et le fichier ajax renvoie en écho {"dessin":3}
Modifié par Lothindil (21 Aug 2012 - 12:08)
Je suis une idiote...

Pour tester le fichier ajax, j'ai remplacé les $_POST[] par des $_GET[] (pour transmettre les infos via l'url)... A part que mon jquery transmet les données en $_POST[].

Le php plantait donc, n'ayant pas les variables (que je n'ai pas testé, c'est un fichier de travail qui sert pour moi uniquement), et c'était jayson qui était vide. (après avec les infos de la console d'erreur, on va pas aller loin Smiley ohwell )