Page 1 sur 1

PHP Mysql json (SyntaxError: Unexpected token < in JSON at position 0)

Posté : 19 juin 2016, 10:23
par M.Med
Bonjour,
je découvre JSON ainsi j ai voulu récupérer les informations depuis une base Mysql pour modification j'ai le log:
Merci d'avance


consol log
Object {readyState: 4, responseText: "<script type="text/javascript">
↵if (!window.conso…ridge":"Y","status":"","photo":"","filetype":""}]", status: 200, statusText: "OK"}abort: ( statusText )always: ()complete: ()done: ()error: ()fail: ()getAllResponseHeaders: ()getResponseHeader: ( key )overrideMimeType: ( type )pipe: ( /* fnDone, fnFail, fnProgress */ )progress: ()promise: ( obj )readyState: 4responseText: "<script type="text/javascript">
↵if (!window.console) console = {};console.log = console.log || function(){};console.warn = console.warn || function(){};console.error = console.error || function(){};console.info = console.info || function(){};console.debug = console.debug || function(){};</script>
↵XXXXXXXXXXXXXXXXXXXX<br />↵<b>Warning</b>: mysql_fetch_assoc() expects parameter 1 to be resource, array given in <b>C:\dev2\EasyPHP-5.3.8.1\www\hotel\rooms.php</b> on line <b>26</b><br />
[{"roomid":"2","roomno":"2","roomtypeid":"2","roomname":"Chambre 02","noofrooms":"1","occupancy":"","tv":"Y","aircondition":"Y","fun":"","safe":"Y","fridge":"Y","status":"","photo":"","filetype":""}]"setRequestHeader: ( name, value )state: ()status: 200statusCode: ( map )statusText: "OK"success: ()then: ( /* fnDone, fnFail, fnProgress */ )__proto__: Object
VM416:71 parsererror
VM416:72 SyntaxError: Unexpected token < in JSON at position 0
at Object.parse (native)
at parseJSON (http://127.0.0.1/hotel/js/jquery-1.9.1.js:541:23)
at ajaxConvert (http://127.0.0.1/hotel/js/jquery-1.9.1.js:8246:19)
at done (http://127.0.0.1/hotel/js/jquery-1.9.1.js:8050:18)
at XMLHttpRequest.callback (http://127.0.0.1/hotel/js/jquery-1.9.1.js:8598:8)

rooms.php
<?php
	$cn = mysql_connect("127.0.0.1", "root", "");
	if($cn)
	{
		mysql_select_db("hotelmis", $cn);
	}
		
	// Edit
	if(isset($_POST['editvalue']) && $_POST['editvalue'] == 1){
		// Try getting data from database
	   Try {
		   echo'XXXXXXXXXXXXXXXXXXXX';
			$search=$_POST["idroom"];
			$sql = "select * from rooms where roomid = '".$search."'";
			$row = mysql_query($sql);
			while($row = mysql_fetch_assoc($row)) {
			   $rows[] = array_map('utf8_encode', $row);
			}
			// Set header JSON
			header("Content-type:text/x-json");

			// Return result
			echo json_encode($rows);
			//http_response_code (200);
			exit();
			
		} Catch(PDOException $e){
			echo "Database error:";
		}
	} 	
?>

<script type="text/javascript" src="roomsListener.js"></script>
<div id="chambre">
<form action="rooms.php" method="post" enctype="multipart/form-data">
<table class="tg" id = "room_id">
  <tr>
	  <td class="tg-031e"  id = "titre_ecran"  colspan="2" align="center" >Chambres</td>
	  <td class="tg-yw4l" colspan="2">
	  <fieldset>
      <legend>Recherche</legend>
		  <table class="tg">
		  <tr>
			<td class="tg-yw4l" colspan="2">
			<input type="hidden" id="idroom" value=""/>
			  <div id="search">
				<input type="text" name="searchroom" class="search"  value="" placeholder="000" required />
				<button id="btnsearch" type="button" name="search">Chercher</button>
			  </div>
			</td>
		  </tr> 
		</table>
	  </fieldset>
	  </td>
  </tr>
  <tr>
    <td class="tg-yw4l" colspan="2">
 <fieldset>
      <legend>Description</legend>
  <table class="tg">
	<tr>
		<td class="tg-031e">No. de la chambre</td>
		<td class="tg-031e"><input type="text" id="roomno" name="roomno" value="" placeholder="000" required/></td>
	</tr>
	<tr>
		<td class="tg-031e">Type de la chambre</td>
		<td class="tg-031e"><select id="roomtypeid" name="roomtypeid"><?php populate_select("roomtype","roomtypeid","roomtype",$rooms->roomtypeid);?></select></td>
	</tr>
	<tr>
		<td class="tg-031e">Nom de la chambre</td>
		<td class="tg-031e"><input type="text" id="roomname" name="roomname" value=""  placeholder="Impériale"/></td>
	</tr>
	<tr>
		<td class="tg-031e">Etage de la chambre </td>
		<td class="tg-031e"><select id="noofrooms" name="noofrooms"><?php populate_select("etagerooms","etage_id","etage_libelle",$rooms->noofrooms);?></select></td>
	</tr>
  </table>
 </fieldset>
 </td>
    <td class="tg-yw4l" colspan="2">
 <fieldset>
      <legend>Equipement</legend>
  <table class="tg">
    <tr>
   <td class="tg-031e">TV</td>
   <td class="tg-031e"><input type="checkbox" name="tv" id="tv" value="Y"/></td>
    </tr>
    <tr>
   <td class="tg-031e">Air conditionné</td>
   <td class="tg-031e"><input type="checkbox" name="aircondition" id="aircondition" value="Y"/></td>
    </tr>
    <tr>
   <td class="tg-031e">Coffre-fort</td>								
   <td class="tg-031e"><input type="checkbox" name="safe" id="safe" value="Y" /></td>
    </tr>
    <tr>
   <td class="tg-031e">Frigo</td>
   <td class="tg-031e"><input type="checkbox" name="fridge" id="fridge" value="Y" /></td>
    </tr>
  </table>
 </fieldset>
 </td>
  </tr>

  <tr>
    <td class="tg-yw4l"><input id="btnsave" type="button" name="Submit" value="Ajouter la chambre" /></td>
    <td class="tg-yw4l"><input id="btnlist" type="button" name="Submit" value="List des chambres" onclick="self.location='rooms_list.php'"/></td>
    <td class="tg-yw4l"><input id="btndetail" type="button" name="Submit" value="Détails de la chambre" onclick="loadHTML('ajaxfunctions.php','RequestDetails','RoomDetails')"/></td>
    <td class="tg-yw4l"></td>
  </tr>
<!--  
	<tr>
		<td class="tg-yw4l" colspan="4"><div id="data_room"> </div>
	</tr>
  -->
  
</table>
</form>

</div>


roomsListner.js
$(function(){	
	$('#btnsearch').click(function(){
	var num_chambre 	= $('.search').val();	
	alert("recherche >" + num_chambre + "<");
	document.getElementById("roomno").style.background = 'red';
	$.ajax({
			url		: 'rooms.php',
			type	: 'POST',
			dataType: 'json',
			data	:{
						editvalue 	: 1,
						idroom		: num_chambre
					  },
			success	:function(text)
			{	
				console.log(text);

				$('#idroom').val(text.roomid);
				$('#roomno').val(text.roomno);
				$('#roomtypeid').val(text.roomtypeid);
				$('#roomname').val(text.roomname);
				$('#noofrooms').val(text.noofrooms);
				
				$('#tv').val(text.tv);
				if(text.tv == 'Y')
					$('#tv')[0].checked = true;
				else
					$('#tv')[0].checked = false;
				
				$('#aircondition').val(text.aircondition);
				if(text.aircondition == 'Y')
					$('#aircondition')[0].checked = true;
				else
					$('#aircondition')[0].checked = false;
				
				$('#safe').val(text.safe);
				if(text.safe == 'Y')
					$('#safe')[0].checked = true;
				else
					$('#safe')[0].checked = false;
				
				$('#fridge').val(text.fridge);
				if(text.fridge == 'Y')
					$('#fridge')[0].checked = true;
				else
					$('#fridge')[0].checked = false;
			},
			 error: function(jqXHR, textStatus, errorThrown)
			{
				alert("error");
				console.log(jqXHR);
				console.log(textStatus);
				console.log(errorThrown);
				alert("jqXHR :"+jqXHR);
				alert("textStatus :"+textStatus);
				alert("errorThrown :"+errorThrown);
			}
		});
});
	
});

Re: PHP Mysql json (SyntaxError: Unexpected token < in JSON at position 0)

Posté : 19 juin 2016, 10:52
par @rthur
Bonjour,

Ça ne sert à rien de nous balancer tout ton code, il est + efficace de nous indiquer où tu bloques, ce que tu as essayé et ce qui ne marche pas, et uniquement les extraits de code pertinents pour le debugg

Le message d'erreur :
SyntaxError: Unexpected token < in JSON at position 0
t'indique que javascript attend du JSON et récupère en 1er caractère le signe "<" donc que la chaine qui lui est renvoyé n'est pas du JSON d'où l'erreur.

Et c'est confirmé ici :
responseText: "<script type="text/javascript">
où au lieu d'avoir du JSON tu as du HTML avec une balise script...

Re: PHP Mysql json (SyntaxError: Unexpected token < in JSON at position 0)

Posté : 19 juin 2016, 12:00
par M.Med
Merci pour votre aide, et désolé pour le code..

je n'ai pas compris votre réponse, est-ce qu'il y a une syntaxe spécial Json? je veux dire pour spécifier que du json?
au lieu de :
<script type="text/javascript" src="roomsListener.js"></script>
c'est :
<script src="roomsListener.js"></script>

merci de m'expliquer et de m’éclaircir le bug??

Re: PHP Mysql json (SyntaxError: Unexpected token < in JSON at position 0)

Posté : 19 juin 2016, 15:10
par M.Med
tjrs le même bug
y a t'il quelqu'un qui peut m'aider
merci.

Re: PHP Mysql json (SyntaxError: Unexpected token < in JSON at position 0)

Posté : 19 juin 2016, 19:59
par @rthur
Tu fais un appel depuis ta page HTML en attendant une réponse au format JSON, or l'url que tu appelles ne renvoie pas du JSON mais du code HTML.
Fait Ctrl+Maj+i dans Firefox/Chrome pour afficher la console de développement web puis va dans l'onglet réseau, rafraichis ta page et tu verras les requêtes ajax qui sont effectuées dont celle qui attend des données en JSON et tu verras en cliquant dessus que ce n'est pas du JSON envoyé. https://fr.wikipedia.org/wiki/JavaScrip ... on#Exemple

Re: PHP Mysql json (SyntaxError: Unexpected token < in JSON at position 0)

Posté : 20 juin 2016, 10:17
par M.Med
Merci @rthur,

Vous avez raison, j’ai un include page php dedans je fais appel à une class Debug.php
Il suffit de supprimer cet appel et ça fonctionne,

Re: PHP Mysql json (SyntaxError: Unexpected token < in JSON at position 0)

Posté : 20 juin 2016, 10:24
par M.Med
résolut.