Ik kan het hier de fout of probleem niet vinden. Ik heb een link met bijhorende javascript:

<a href="#" data-id="<?php echo $hist_id; ?>" class="showme btn btn-orange btn-single btn-xs">Aanpassen</a>

<script type="text/javascript">
jQuery(function($){
         $('a.showme').click(function(ev){
             ev.preventDefault();
             var uid = $(this).data('id');
             $.get('aanpas-modal.php?id=' + uid, function(html){
                 $('#modal-7 .modal-body').html(html);
                 $('#modal-7').modal('show');
             });
         });
    });
</script>

De bedoeling is dat er dan een popup opent met een aanpaspagina, daarvoor moet ik dus de data-id attribute meesturen en dat doe ik in de javascript. Dit alles werkt prima.

Nu wil ik daaronder nog een link zetten om hetzelfde te doen:

<a href="#" data-id="<?php echo $hist_id2; ?>" class="showme2 btn btn-orange btn-single btn-xs">Aanpassen</a>

<script type="text/javascript">
jQuery(function($){
         $('a.showme2').click(function(ev){
             ev.preventDefault();
             var uid = $(this).data('id');
             $.get('aanpas-modal.php?id=' + uid, function(html){
                 $('#modal-7 .modal-body').html(html);
                 $('#modal-7').modal('show');
             });
         });
    });
</script>

Die popup opent ook maar hij past mijn pagina niet aan. Bij de eerste wel. Voor beide gebruik ik aanpas-modal.php:

<?php
$id = $_GET['id'];
echo 'ID: '.$id;

require ('config.php');
	
         $conn = mysql_connect($host,$user,$pass) or die (mysql_error());
         mysql_select_db($dbnm) or die (mysql_error());
       
		 $sql = "SELECT * FROM historiek WHERE id = '". $id ."'";
		 $res = mysql_query($sql) or die (mysql_error());

         while($row = mysql_fetch_assoc($res)) 
     		{ 
?>
                    
          <div class="row">
			<form role="form" method="post" id="historiek">
				
				<div class="form-group">
					<textarea class="form-control ckeditor" id="editor10" name="historiek" rows="10"><?php echo $row['historiek']; ?></textarea>
				</div>
                
				<div class="form-group">
					<button id="Submit1234" type="submit" name="Submit" class="btn btn-info">Wijzigen</button>
				</div>
			<input type="hidden" name="id" value="<?php echo $id; ?>">	
			</form>
		  </div>
  
<script>
$(function(){
    $('#Submit1234').click(function(e){
      e.preventDefault();
      //alert($('#editor10').val());
      
      $.post('aanpas-modal-process.php', 
         $('#historiek').serialize(), 
         function(data, status, xhr){
           //alert('Gelukt!');
		   //$("#thanks").html(data) //hide button and show thank you
			alert('Opgeslagen... Sluit popup!');   
         });
    });
});

</script>
  
<script type="text/javascript">
jQuery(function($){
$('#editor10').ckeditor();
});
</script>          

<?php } ?>

Op die pagina krijg ik wel iedere keer de juiste id waarde mee.
Hoe zou dit komen? Iemand een idee?

Voor alle duidelijkheid nog even de aanpas-modal-process.php:

<?php
//grab named inputs from html then post to #thanks
if (isset($_POST['historiek'])) {

$id = strip_tags($_POST['id']);
$historiek = strip_tags($_POST['historiek']);

require ('config.php');
	
         $conn = mysql_connect($host,$user,$pass) or die (mysql_error());
         mysql_select_db($dbnm) or die (mysql_error());
       
		 $sql = "UPDATE historiek SET historiek = '$historiek' WHERE id = '". $id ."'";
		 $res = mysql_query($sql) or die (mysql_error());

}
?>


Dit topic is ook gepost op http://www.pfz.nl/forum/topic/11071-javascript-probleem/
Kan iemand mij hier verder helpen? Ik geraak er niet aan uit.
Heb je een voorbeeld online staan?
Wordt de tweede link pas aan de html toegevoegd als er op de eerste gedrukt is?

Want een event zoals .click() kun je pas aan een html-element koppelen als die bestaat. Anders gezegd: Als je later dynamisch elementen toevoegt dan moet je ook dynamisch de events toevoegen (en pas nadat je het element hebt toegevoegd).

Verder heb je per pagina in principe maar één .ready() functie nodig. Deze wordt éénmalig automatisch aangeroepen als de pagina geladen is.

[size=xsmall]Toevoeging op 23/01/2015 12:52:53:[/size]

http://codepen.io/anon/pen/KwqgNj
in je topic op pfz heb ik je een suggestie gedaan hoe je de javascript ook zou kunnen schrijven.

helpt dat nog iets?
Brecht, ben je aan het oefenen voor het Copy-Paste certificaat?

2x 8 regels code met als enige verschil een nummertje kan veel eenvoudiger.

Je hebt in de response van de AJAX-request javascript staan, maar dat staat daar niets te doen want dat wordt gezien als tekst. Waarschijnlijk staat er ergens al een gedeelte van dat script al in de bron bij het laden van de pagina, anders kan het de eerste keer ook niet werken.

Het simpelste is om de modal, en het benodigde JS, alvast in de html te plaatsen, en de inhoud van de benodigde velden
dynamisch te wijzigen. Bv
[code lang="js"]
$(".showMe").on("click", function(e) {
e.preventDefault();
var uid = $(this).data("id");
$.ajax({
url: 'aanpas-modal.php',
type: 'get',
dataType: 'html',
data: {id: uid}
})
.done(function(html) {
$("#uid").val(uid);
$("#editor10").ckEditor().editor.setData(html);
$('#modal-7').modal('show');
})
.fail(function() {
alert('AJAX heeft verloren');
});
});
[/code]


[size=xsmall]Toevoeging op 23/01/2015 13:26:25:[/size]

Vergeet niet om uid als id mee te geven aan de hidden input
@Ivo: ik heb de strip-tags vervangen en je suggestie geprobeerd maar kom niks extra te weten via firebug.
@Frank: De 2 links werken onafhankelijk van elkaar. Als ik die samenzet in 1 javascript past hij de gegevens ook niet aan in de database. Als ik ze in 2 links zet zoals nu, werkt de eerste link met aanpassen in db wel (dus zoals het moet zijn) en bij de 2de link werkt enkel de verschijning van de popup wel maar past niks aan in de db.
Dus ik denk dat er ergens iets is tussen de aanpas-modal.php en de aanpas_modal-proces.php Zou dat kunnen? Maar waarom werkt het dan wel bij de eerste link?

[size=xsmall]Toevoeging op 23/01/2015 14:19:21:[/size]

@Ger: er staat een javascipt op de aanpas-modal.php die de aanpas-modal-proces.php oproept en zo de gegevens in de database kan aanpassen. Wat jij wil zeggen is dat ik het script bij de link moet aanpassen met jouw versie en de javascript op de aanpas-modal.php gewoon mag laten staan? Of kan daar ook nog iets aan veranderen?
Je hebt in de response van de AJAX-request javascript staan, maar dat staat daar niets te doen want dat wordt gezien als tekst.

Met andere woorden het wordt niet uitgevoerd, en is dus volslagen nutteloos.

Het enige wat varieert in aanpas-modal.php is de inhoud van de textarea en van de hidden input.
Die laatste kan je direct vanuit javascript wijzigen. Ik ga ervan uit dat je ze alle vijf op rijtje hebt, en als ze niet in ploegendienst werken, moet het niet zo moeilijk zijn om te kunnen bepalen wat er nog aanpas-modal.php moet staan.

Al het andere neem je gewoon mee in de html/javascript van de pagina die wordt aangeroepen.





@Ger: ik begrijp niks van je uitleg. Ik denk dat ze in ploegendienst werken... Ik zie ook niet waar je de modal aanroept. Zonder dat is er geen popup.
Die aanroep was ik vergeten, ik heb het aangepast.

[code lang="js"]
.done(function(html){
// uid heb je eerder verkregen uit het data-id attribuut
// en dit je ze in de value van de hidden
$("#uid").val(uid);

// zet de gegevens verkregen uit de response in de
// in de inhoud van de editor (NIET de textarea)
$("#editor10").ckEditor().editor.setData(html);

// toon de popup
$('#modal-7').modal('show');
})
[/code]

Wat ik niet begrijp is dat je ckEditor gebruikt en bij de post door striptags heen haalt.
Ik heb een aantal aanpassingen gemaakt maar we zijn er nog niet.
Die striptags hoeven er niet te staan bij de post voor de ckeditor.


<script>
$(".showme2").on("click", function(e) {
    e.preventDefault();
    
	var uid = $(this).data("id");
    $.ajax({
        url: 'aanpas-modal.php',
        type: 'get',
        dataType: 'html',
        data: {id: uid}
    })
.done(function(html) {
        $("#uid").val(uid);
        // Als deze regel hieronder er staat komt de popup niet te voorschijn.	
        $("#editor10").ckEditor().editor.setData(html); 
        // Moet er bij om de modal juist te laten verschijnen
        $('#modal-7 .modal-body').html(html); 
        $('#modal-7').modal('show');
    })
.fail(function() {
        alert('AJAX heeft verloren');
        });
});
</script>

De modal verschijnt als ik die ene regel weglaat in de javascript (zie comments). Maar in de aanpas-modal.php moet ik wel de code hieronder laten staan anders krijg ik geen ckeditor te zien maar enkel een textarea:


<script type="text/javascript">
jQuery(function($){
$('#editor10').ckeditor();
});
</script>


Maar met dit alleen gebeurd er ook geen aanpassing van de data in de database.

Reageren