Der Fehler liegt in deiner ShowMsg-Funktion:
"data" beinhaltet die binären Bilddaten selbst, folglich macht es keinen Sinn, diese in einem HTML-Kontext (innerHTML) anzeigen zu lassen.
Im Prinzip benötigst du auch keine AJAX-Anfrage, da du die URL einfach selbst konstruieren und einem <img>-Element zuweisen kannst:
Javascript:
function ShowMsg(data) {
document.getElementById("outputAll").innerHTML = data;
}
Im Prinzip benötigst du auch keine AJAX-Anfrage, da du die URL einfach selbst konstruieren und einem <img>-Element zuweisen kannst:
HTML:
<!DOCTYPE html>
<html>
<head>
<title>Titel (sonst ist das HTML ungültig)</title>
</head>
<body>
<form>
<input type="checkbox" value="2000" name="jahr[]" id="jahr">2000<br>
<input type="checkbox" value="2001" name="jahr[]" id="jahr">2001<br>
<input type="checkbox" value="2002" name="jahr[]" id="jahr">2002<br>
</form>
<!-- Ein img-Element ohne src-Attribut ist ungültig. Die sauberste Lösung wäre immer noch, das Element per JS hinzuzufügen. -->
<img src="empty.png" alt="Diagramm" />
<!-- Skripte zwecks Schnelligkeit des Seitenaufbaus am Ende einfügen -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
$(document).ready(function() {
$('form').delegate('input:checkbox', 'click', anzeige);
});
function anzeige() {
var arr = $.map($('input:checkbox:checked'), function(e, i) {
return +e.value;
});
var url = 'phplot_bild.php' + $.param({jahre: arr})
$('img#chart').attr('src', url);
}
</script>
</body>
</html>