[PROBLEM] JavaScript/Ajax/PhP Get-Verbindung

11/07/2012 14:33 Ravenstorm#1
Hey Leute,

ich habe hier ein kleines Problem und zwar.

Ich habe ein JavaScript welches bei einem Change einer Dropdownbox ausgeführt wird, dieses sieht so aus:

PHP Code:
new Ajax.Request'/newphp.php?b='+sqlcommand, {
            
method:  'get',
            
parameters:  'b=',
            
onSuccess:  function(response){
            
alert("Funktioniert");
            
document.new.DropDownModulBezeichnung.value=response;
        } 
Das Problem dahinter ist, er gibt mir den Alert ja zurück, allerdings bekommt er als "response" immer "nichts" zurück.

Deswegen muss es ja irgendwie an der Verdbindung zu dem PhP Script liegen welches da ja aufgerufen wird, dieses sieht so aus:

PHP Code:
<?php
        
        
if ($_GET["b"]!="")
        {
            
            
$conn odbc_connect(db,nutzer,pw) or die("No Connection");
        
            
$sql = ($_GET["b"]);

            
$sql str_replace("\\"''$sql);
            
$result odbc_exec($conn,$sql);
            
$test odbc_result($result,1);        
            echo 
$test;

        }

?>
Das Problem ist, wenn ich die Seite im Browser aufrufe mit dem SQL-Command, dann kriege ich das richtige ausgegeben, eben nur nicht wenn ich es per Ajax.Request aufrufe.
11/07/2012 16:38 マルコ#2
$_GET["b"] solltest du mit isset() prüfen.
Und vor allem solltest du dich gegen SQLInject absichern
außerdem fehlt in deinem Script unten }); was aber wahrscheinlich nur ein Kopierfehler ist.
Versuch mal bei der URL den / vorne weg zu lassen.
11/07/2012 17:17 Ravenstorm#3
Quote:
Originally Posted by マルコ View Post
$_GET["b"] solltest du mit isset() prüfen.
Und vor allem solltest du dich gegen SQLInject absichern
außerdem fehlt in deinem Script unten }); was aber wahrscheinlich nur ein Kopierfehler ist.
Versuch mal bei der URL den / vorne weg zu lassen.
ja mit isset werde ich es dann mal gleich versuchen und das mit sqlinject lass ich mal aussen vor, da es jetzt erstmal funktionieren soll.
Das ist ein Kopierfehler ja.
Das "/" ist nur ein Überbleibsel einer "eigentlichen" url, die ich nur nicht zeigen wollte.
11/07/2012 18:53 マルコ#4
Nunja, es könnte auch gut sein, dass du evtl. so wie dus gemacht hast eine URL mit 2 b Parametern erzeugst.. oder der leere, den du ankündigst, den anderen überschreibt - keine Ahnung - so dass nachher gar keine SQL Query ankommt - dann ist der Bildschirm weiß.

versuchs mal mit b nur einmal als GET Parameter zu übergeben (oder evtl. vllt sogar als POST Parameter, der kann sich nicht aus versehen in deine URL einmogeln^^)

Code:
$.ajax({
  url: 'newphp.php',
  type: 'GET',
  data: {
    b: sqlcommand
  }
}).success(function(e) { alert(e); });
11/08/2012 10:04 Ravenstorm#5
Also ich habe jetzt einmal den Code von dir benutzt und dieser ging nicht :(

Daraufhin habe ich meinen Code ein bisschen umgeändert ->
PHP Code:
        url 'http://*******/*****/newphp.php';
        new 
Ajax.Requesturl, {
            
method'get',
            
parameters'b='+sqlcommand,
            
onComplete:  function(response){
            
alert(response);
            
document.new.DropDownModulBezeichnung.value=response;
        }
        }); 
und beim
PHP Code:
alert(response); 
gibt er mir nur: [object Object] aus.
11/08/2012 15:30 PseudoPsycho#6
Quote:
Originally Posted by Ravenstorm View Post
gibt er mir nur: [object Object] aus.
Kein Wunder.
Code:
alert(response.responseText);
müsste es ja auch heißen ;)
11/08/2012 15:42 Ravenstorm#7
Quote:
Originally Posted by PseudoPsycho View Post
Kein Wunder.
Code:
alert(response.responseText);
müsste es ja auch heißen ;)
Danke, aber das hab ich dann schon eingefügt. Und dann kam eben der Source-Code und ich arbeite in einem Framework für Typo3 names lumophpinclude.

Denn ich habe jetzt alles so hinbekommen wie es sein sollte, allerdings macht mir da das Framework einen Strich in die Rechnung, da ich den Kompletten Sourcecode wieder bekomme und nicht nur die zu suchende Variable aus dem SQL-Server.
Die kommt dann wiederum nach Massen an anderem Code in einem <div>, da weiß ich allerdings nicht wirklich wie ich das regeln soll. O.o
11/08/2012 16:27 eromer#8
Wenn du eine Developer Tool mit Console(Firebug oder Chromiums Internes ding) hast, versuch mal:
HTML Code:
console.log(response);
Ist besser als alert()

Grüße
11/14/2012 13:18 Ravenstorm#9
Quote:
Originally Posted by eromer View Post
Wenn du eine Developer Tool mit Console(Firebug oder Chromiums Internes ding) hast, versuch mal:
HTML Code:
console.log(response);
Ist besser als alert()

Grüße
Danke, aber ich brauche den alert befehl weil ich direkt die Veränderung auf der Webseite sehen will.

Das Problem hat sich gelöst im Prinzip haben die Funktionen alle funktioniert, allerdings sind die Ajax-Funktionen nicht ganz kompatibel mit dem "phplumoinclude" aus typo3... deswegen habe ich das alles einfach mit einer hiddentextbox gelöst.