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

Petit nouveau ! | 7 Messages

19 juin 2016, 10:23

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);
			}
		});
});
	
});

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7256 Messages

19 juin 2016, 10:52

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...
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

19 juin 2016, 12:00

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??

Petit nouveau ! | 7 Messages

19 juin 2016, 15:10

tjrs le même bug
y a t'il quelqu'un qui peut m'aider
merci.

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7256 Messages

19 juin 2016, 19:59

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 7 Messages

20 juin 2016, 10:17

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,

Petit nouveau ! | 7 Messages

20 juin 2016, 10:24

résolut.