Hallo allerseits,
bin mir nicht sicher, ob das hier überhaupt noch jemand liest,
aber ich finde jetzt auch keine wirkliches Alternativ-Forum
oder hätte dazu jemand einen Tip?
wie auch immer
Mein Problem ist eigentlich eher allgemeiner Art,
ich habe innerhalb eines Formular (method=POST)
einen XHTML request und es scheint, daß dieser Request letztlich nur das Formular-submit auslöst
und nicht das tut für was es programmiert wurde.
Ich frage mich warum das so ist bzw. ob mir da ein grundsätzlicher Verständnis fehlt,
denn eigentlich möchte ich mit dem Request nur eine prompt-abfrage erzeugen
die im Hintergrund (php-) SESSION-Variablen setzten soll.
im Speziellen:
html-teil:
java-script:
php (hidden_access.php) eigentlich nicht wichtig, da er bis dahin gar nicht mehr kommt,
bei der Netzwerkanalyse heißt es: NS_BINDING_ABORTED und danach kommt der (POST) submit
wie gesagt, ich würde erst mal einf gerne verstehen warum mit dem XHR ein Submit ausgeführt wird
und noch schöner wäre es, wenn ich einen Tip bekäme wie das und der NS_BINDING_ABORTED zu verhindern wäre?
vielen Dank
Zen
bin mir nicht sicher, ob das hier überhaupt noch jemand liest,
aber ich finde jetzt auch keine wirkliches Alternativ-Forum
oder hätte dazu jemand einen Tip?
wie auch immer
Mein Problem ist eigentlich eher allgemeiner Art,
ich habe innerhalb eines Formular (method=POST)
einen XHTML request und es scheint, daß dieser Request letztlich nur das Formular-submit auslöst
und nicht das tut für was es programmiert wurde.
Ich frage mich warum das so ist bzw. ob mir da ein grundsätzlicher Verständnis fehlt,
denn eigentlich möchte ich mit dem Request nur eine prompt-abfrage erzeugen
die im Hintergrund (php-) SESSION-Variablen setzten soll.
im Speziellen:
html-teil:
Code:
<form enctype="application/x-www-form-urlencoded" name="AddNote_" action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<button onclick="call_db('cmd=2');">call-db</button>
<form>
java-script:
Code:
function call_db(paras) { // diese Funktion ruft am Ende get_data() als Callback-Funkton auf
try { //erstellen des requests
req = new XMLHttpRequest();
}
catch (e) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (failed) {
req = null;
}
}
}
if (req == null) alert("Error creating request object!");
req.open("GET", "./hidden_access.php?"+paras, true);
req.onreadystatechange = get_data; // call-back (s. nächste Fnkt)
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(null);
}
function get_data() { // ist die callback-Funktion von call_db()
switch (req.readyState) {
case 4: if (req.status != 200) { }
else { //antwort des servers
if (req.responseText != '')
var dataset = eval('('+req.responseText+')'); // hier kommen die Daten (Antwort) als json-string an
switch (dataset.cmd) {
case 2: call_db('cmd=3&ans='+prompt(dataset.quest)); break;
case 3: if (dataset.bin == 0 && dataset.ans != 'null') call_db('cmd=3&ans='+prompt(dataset.quest)); break;
}
}
break;
default: return false;
break;
}
}
php (hidden_access.php) eigentlich nicht wichtig, da er bis dahin gar nicht mehr kommt,
bei der Netzwerkanalyse heißt es: NS_BINDING_ABORTED und danach kommt der (POST) submit
Code:
switch ((int)$_GET['cmd']) {
case 2: // human request Frage stellen
$_SESSION['frage'] = 'gegenteil von warm';
$_SESSION['antwort'] = 'kalt';
print(trim(json_encode(array("cmd" => 2, "quest" => $_SESSION['frage']))));
break;
case 3: // human request // Antwort prüfen
$answer_giv = strtolower(preg_replace('/[^0-9A-Za-zäüöÄÜÖ]/', '', $_GET['ans']));
if ($answer_giv == $_SESSION['antwort'] && $_SESSION['antwort'] != '') {
$_SESSION['human'] = true;
print(trim(json_encode(array("cmd" => 3, "bin" => 1))));
}
else if ($_GET['ans'] == '') { // abbruch
$_SESSION['human'] = false;
print(trim(json_encode(array("cmd" => 3, "quest" => $_SESSION['frage'], "ans" => $answer_giv, "antwort" => 'falsch', "bin" => 0))));
}
else {
$_SESSION['human'] = false;
print(trim(json_encode(array("cmd" => 3, "bin" => 2))));
}
break;
}
wie gesagt, ich würde erst mal einf gerne verstehen warum mit dem XHR ein Submit ausgeführt wird
und noch schöner wäre es, wenn ich einen Tip bekäme wie das und der NS_BINDING_ABORTED zu verhindern wäre?
vielen Dank
Zen