2de functie paramter geeft "[object HTMLFormElement]" terug.

  • Onderwerp starter Onderwerp starter Matse
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Matse

Gebruiker
Lid geworden
18 jul 2007
Berichten
42
Hi,

Ik zit hier met een vaag probleem, en snap er echt helemaal niets van! Ik heb nog nooit last gehad van dit probleem. Het zit zo:

Via php lees ik mn database uit om zo een aantal rijen op het scherm te zetten, met daarin o.a een image met een onclick functie. (Zie rode gemarkeerd).
De functie heet publishI_t_em(). publish + item dus aan elkaar. (Het forum maakt er die **** van omder er anders s_h_i_t staat.

De php:
Code:
	<?php
	$i=0;
        $queryStructure = $db->select ("SELECT * FROM structure");
	while($row = mysql_fetch_array($queryStructure)){

		if($i == 0){ $color = 'odd'; $i++; }else{ $color = 'even'; $i--; }

		echo '<div class="contentItem '.$color.'">
		<div class="columnW420">'.$row['label'].'</div>
			<div class="columnW150"><img title="artikel" src="/CMS/html/images/structure_icon.png" />Menu item</div>
			<div class="columnW150">'.$row['date'].'1</div>
			<div class="columnW150">';

				if($row['published'] == '0')
				{
					[COLOR="#FF0000"]echo '<img onclick="publi****em('.$row['id'].', '.$page.');" title="Publiceren" src="/CMS/html/images/deactivate_icon.png" class="clickable" [/COLOR]/>';
				}else{
					[COLOR="#FF0000"]echo '<img onclick="publi****em('.$row['id'].', '.$page.');" title="Depubliceren" src="/CMS/html/images/activate_icon.png" class="clickable" />';[/COLOR]
				}
				echo '
				<img onclick="editItem('.$row['id'].', '.$page.')" title="Bewerken" src="/CMS/html/images/edit_icon.png" class="clickable" />
				<img onclick="deleteItem('.$row['id'].', '.$page.')" title="Vewijderen" src="/CMS/html/images/delete_icon.png" class="clickable" />

			</div>
		</div>';
	}
	?>

Zoals je ziet stuur ik 2 parameters mee. Namelijk $row['id'] en als 2de $page, waar $page gewoon in platte tekst 'structure' is.
Als ik nu de bron pagina bekijk in de pagina krijg ik dit:

HTML:
			<div class="columnW150">
<img onclick="publi****em(1, structure);" title="Depubliceren" src="../html/images/activate_icon.png" class="clickable" />
				<img onclick="editItem(1, structure)" title="Bewerken" src="/CMS/html/images/edit_icon.png" class="clickable" />
				<img onclick="deleteItem(1, structure)" title="Vewijderen" src="/CMS/html/images/delete_icon.png" class="clickable" />

			</div>

Hierin staan nu netjes de paremeters. Namelijk het id, 1, en de pagina, structure.
Als ik er nu op klik gaan we naar de volgende functie:

Code:
function publi****em(id, page){ 

  alert(id);
  alert(page);

  $("#popup").fadeIn('fast');
  $.ajaxSetup ({  
      cache: false  
  });  
  var ajax_load = "<img src='/CMS/html/images/ajax-loader.gif' alt='Laden...' />";  
    
  var loadUrl = "/CMS/ajax/publish.php?id="+id;  

  $("#ajaxReturn").html(ajax_load).load(loadUrl);  
}

De functie vangt de 2 parameters op in de variabelen 'id' en 'page'.
Tot nu toe niet zo heel spannend, toch?
Maar, als ik nu deze parameters alert..

Bij de eerste alert krijg ik netjes '1' te zien.
Bij de tweede, dus de var page krijg ik '[object HTMLFormElement]' terug.

Ik heb al geprobeerd $page te vervangen door gewoon 'test' bijvorbeeld. Ook hier krijg ik [object HTMLFormElement] terug.

Het zit echter wel in die parameter.. als ze namelijk omdraait krijg ik uit de var page gewoon '1'. terug.

Heeft iemand een idee..?
Ik wil gewoon in de var id '1' terugkrijgen, en in de var page 'structure'.
 
Laatst bewerkt:
't Zit 'm in dit stukje denk ik, in het bijzonder de onclick-value:
HTML:
<img onclick="publi****em(1, structure);" title="Depubliceren" src="../html/images/activate_icon.png" class="clickable" />
<img onclick="editItem(1, structure)" title="Bewerken" src="/CMS/html/images/edit_icon.png" class="clickable" />
<img onclick="deleteItem(1, structure)" title="Vewijderen" src="/CMS/html/images/delete_icon.png" class="clickable" />

De lastigheid is dat je binnen een string (de onclick-value) een stukje JavaScript-code schrijft. Als je binnen die code een string wil aangeven, doe je dat met aanhalingstekens (en evt. backslashes, escape characters) :)
Like so:
HTML:
<img onclick="deleteItem(1, 'structure')" title="Vewijderen" src="/CMS/html/images/delete_icon.png" class="clickable" />
PHP:
echo '<img onclick="publi****em('.$row['id'].', \''.$page.'\');" title="Depubliceren" src="/CMS/html/images/activate_icon.png" class="clickable" />';

Zie je 't verschil? :)
Succes!
 
Haha Thanks,
IK kwam er toevallig net zelf ook achter! Nu is 'structure' natuurlijk gewoon een variabel die niet gedefinieerd is. Wel vreemd dat mijn firebug niet aangaf van undefined structure bla bla.
 
Als er zo'n variabele niet gedefinieerd is, zoekt je script in de elementen op de pagina. Ik gok dat er toevallig ergens in je document een <form name="structure"> bestaat :P
 
Die staat er inderdaad precies zo in! Ik wist niet dat ie die dan zou pakken. Maar dat verklaart waarom firebug niets aangaf idd. Weer wat geleerd! Thanks!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan