Moinsen,
bin ganz neu hier (allerdings nicht mehr ganz so neu im PHP, eher in der AJAX-Welt...kenne noch die Zeit als man davon träumte, mal einen JS2PHP-Callback hinzukriegen...mit den abstrusesten Krücken )
Ok, zur Sache.
(caller.htm)
(ajax.php)
Also, in Worten:
der mag die " " nicht bei den Attributen, und ich weiß einfach noch nicht wieso. Verhalten ist, dass er mir immer die Exception schmeißt ("Runtime error" schreib ich da wie man sieht oben raus).
Schreib ich statt border="3" nur border, dann klappt es!
Allerdings ist es hier verflixt wichtig, dass ich Attribute verwenden kann.
Auch die aus JS bekannte Krücke (einfache Anführungszeichen, dann doppelte innen) klappt hier nicht.
Also, wo krankt's hier?
bin ganz neu hier (allerdings nicht mehr ganz so neu im PHP, eher in der AJAX-Welt...kenne noch die Zeit als man davon träumte, mal einen JS2PHP-Callback hinzukriegen...mit den abstrusesten Krücken )
Ok, zur Sache.
(caller.htm)
Code:
<script type="text/javascript"> createXHRObject = function() { ... } dispatchToPHP = function (url,params) { var xmlhttp=createXHRObject();if(!xmlhttp){alert('Ajax not supported');return;} xmlhttp.open('POST',url); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlhttp.setRequestHeader("Content-length", params.length); xmlhttp.setRequestHeader("Connection", "close"); xmlhttp.onreadystatechange=function() { if(xmlhttp.readyState!=4)return; // 404 error abfangen hier weggelassen try { new Function(xmlhttp.responseText)(); } catch(E) { alert("RUNTIME ERROR / EXCEPTION: \n\n" + xmlhttp.responseText); } } //onreadystatechange() xmlhttp.send(params); } prepareForCallback = function (value) { // BEMERKUNG: function e() befindet sich in ajax.php ! var tbl = document.getElementById("maintable").value; var e=window.encodeURIComponent||window.escape; var params='tbl='+e(tbl)+'&value='+e(value); dispatchToPHP('ajax.php',params); } </script> <div id="maintable"> <!-- ganz viel unwichtiger Code --> </div> <select id="bla" name="fasel" size="1" onChange=javascript:prepareForCallback(this.value)>
PHP-Code:
<?php
function e($s)
{
return addcslashes($s,"\\&\'\"\n\r<>/");
}
// ------------------------------------------
function testfunc ()
// ------------------------------------------
{
$innerhtmlstr = "<table border><tr><td>this is a test</td></tr></table>";
// fkt. NICHT
// $innerhtmlstr = "<table border=\"2\"><tr><td>this is a test</td>
// </tr></table>";
return $innerhtmlstr;
}
// php-hauptteil (ajax)
$newstr = testfunc();
?>
// JS-Teil
var newstr_js = "<?php echo $newstr;?>";
document.getElementById("blubberbla").innerHTML = newstr_js;
der mag die " " nicht bei den Attributen, und ich weiß einfach noch nicht wieso. Verhalten ist, dass er mir immer die Exception schmeißt ("Runtime error" schreib ich da wie man sieht oben raus).
Schreib ich statt border="3" nur border, dann klappt es!
Allerdings ist es hier verflixt wichtig, dass ich Attribute verwenden kann.
Auch die aus JS bekannte Krücke (einfache Anführungszeichen, dann doppelte innen) klappt hier nicht.
Also, wo krankt's hier?
Kommentar