[AJAX/PHP] Form submitten

Pagina: 1
Acties:

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 13:46
Ik ben voor mijn cms'je bezig om snel de data in een database te stoppen. Hiervoor heb ik een javascript functie die als het goed zou zijn de waardes van de velden naar een php pagina zou sturen en deze zou ze in de database stoppen. Het enige probleem is dat er niks toegevoegd wordt. Ik krijg wél een melding dat de gegevens toegevoegd zijn (javascript) maar als ik in mijn DB kijk staat er niks.

Ik heb nu deze JS:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
var http_request = false;

    function makePOSTRequest(url, parameters){
      http_request = false;
      if(window.XMLHttpRequest){
        http_request = new XMLHttpRequest();
        if(http_request.overrideMimeType){
          http_request.overrideMimeType('text/html');
        }
      }else if(window.ActiveXObject){
        try{
          http_request = new ActiveXObject("Msxml2.XMLHTTP");
        }catch(e){
          try{
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
          }catch(e){}
        }
      }
      if(!http_request){
        alert('Cannot create XMLHTTP instance');
        return false;
      }

      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
    }

    function alertContents(){
      if(http_request.readyState == 4){
        if(http_request.status == 200){
          result = http_request.responseText;
          alert("De gegevens zijn succesvol gewijzigd. De gegevens zijn in de database verwerkt");
        }else{
          alert('There was a problem with the request.');
        }
      }
    }
   
    function sendFormData(obj,type) {
      if(type == "Add"){
        var poststr = "?type=Add"+
                      "&content="+encodeURI(document.forms['configForm'].elements['content'].value)+ 
                      "&pubDate="+encodeURI(document.forms['configForm'].elements['pubDate'].value)+ 
                      "&pubTime="+encodeURI(document.forms['configForm'].elements['pubTime'].value)+ 
                      "&authorInfo="+encodeURI(document.forms['configForm'].elements['authorInfo'].value)+ 
                      "&pdfIcon="+encodeURI(document.forms['configForm'].elements['pdfIcon'].value)+ 
                      "&printIcon="+encodeURI(document.forms['configForm'].elements['printIcon'].value)+ 
                      "&mailIcon="+encodeURI(document.forms['configForm'].elements['mailIcon'].value)+ 
                      "&pageImg="+encodeURI(document.forms['configForm'].elements['pageImg'].value)+ 
                      "&pageImgALT="+encodeURI(document.forms['configForm'].elements['pageImgALT'].value)+ 
                      "&pageImgTitle="+encodeURI(document.forms['configForm'].elements['pageImgTitle'].value);
      }else{
        // Hier komt de edit query
      }
      makePOSTRequest('post.php', poststr);
    }


In mijn formulier staan de velden goed vermeld maar die is een beetje groot om te posten. Ik roep de functie iig zo aan:

HTML:
1
<form id="configForm" method="POST" action="javascript:sendFormData(this.id,'Add');" enctype="multipart/form-data">


Mijn php pagina'tje ziet er zo uit (Is alleen nog even om te testen, vandaar dat er maar 1 veld toegevoegd wordt)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    if($_GET['type'] == "Add"){
      mysql_query("
        INSERT INTO paginas (
          p_content
        )
        VALUES (
          '".$_GET['content']."'
        )
      ");
    }
?>


Wat doe ik hier nu fout. Ook als in in post.php $_GET in $_POST verrander werkt het niet. Ik zie door de bomen het bos even niet meer :o

  • Noork
  • Registratie: Juni 2001
  • Niet online
Ga dan eens wat debuggen. Echo wat dingen in je php script. Is je insert query wel goed? Krijg je mysql errors?

  • Yo-han
  • Registratie: December 2001
  • Laatst online: 02-10 14:12

Yo-han

nope.

Je kan volgens mij beginnen met het checken van je JS.

JavaScript:
1
... var poststr = "?type=Add"+ ....


? is voor gebruik in een url, dus GET. Je post dus dat ? kan je achterwege laten. Verder sluit ik volledig aan bij mijn voorganger.

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 13:46
Er wordt helemaal niks van mijn php script weergegeven. Het enige wat die zou moeten doen is de data de db instoppen. Verder niks weergeven.
En eerlijkheid gebied mij te zeggen dat ik inderdaad nog niet naar het PHP stukje gekeken heb :X

Heb nu even gekeken en zit (volgens mij) geen fout in de PHP code. Heb de query voor de zekerheid gekopieërd uit een ander stukje wél werkende code (en aangepast natuurlijk :)) en er staat nogsteeds niks in mijn db

[ Voor 3% gewijzigd door kleautviool op 03-01-2007 14:02 ]


  • rickpastoor
  • Registratie: Februari 2003
  • Laatst online: 06-11-2021
Ik zat even naar mijn eigen ajax code te kijken..en daarin zet ik geen vraagteken aan het begin van mijn postdata. Probeer die eens weg te halen en kijk eens wat er gebeurd..

Ik had zelf de post van Yo-han over het hoofd gezien :w

[ Voor 14% gewijzigd door rickpastoor op 03-01-2007 14:30 ]


  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 13:46
Dat vraagteken heb ik weggehaald maar er wordt nogsteeds niks in mijn database gedropt :?

  • rickpastoor
  • Registratie: Februari 2003
  • Laatst online: 06-11-2021
En als je de php pagina met de hand aanroept doet hij het wel? Dus pagina.php?type=Add etc.

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 01-12 19:42

BHR

Zie
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function sendFormData(obj,type) {
      if(type == "Add"){
        var poststr = "?type=Add"+
                      "&content="+encodeURI(document.forms['configForm'].elements['content'].value)+ 
                      "&pubDate="+encodeURI(document.forms['configForm'].elements['pubDate'].value)+ 
                      "&pubTime="+encodeURI(document.forms['configForm'].elements['pubTime'].value)+ 
                      "&authorInfo="+encodeURI(document.forms['configForm'].elements['authorInfo'].value)+ 
                      "&pdfIcon="+encodeURI(document.forms['configForm'].elements['pdfIcon'].value)+ 
                      "&printIcon="+encodeURI(document.forms['configForm'].elements['printIcon'].value)+ 
                      "&mailIcon="+encodeURI(document.forms['configForm'].elements['mailIcon'].value)+ 
                      "&pageImg="+encodeURI(document.forms['configForm'].elements['pageImg'].value)+ 
                      "&pageImgALT="+encodeURI(document.forms['configForm'].elements['pageImgALT'].value)+ 
                      "&pageImgTitle="+encodeURI(document.forms['configForm'].elements['pageImgTitle'].value);
      }else{
        // Hier komt de edit query
      }
      makePOSTRequest('post.php', poststr);
    }


Volgens mij kent makePOSTRequest() de variabele poststr (regel 17) helemaal niet (is lokale var binnen de if)

Probeer eens
JavaScript:
1
2
alert(poststr);
makePOSTRequest('post.php', poststr);

[ Voor 3% gewijzigd door BHR op 03-01-2007 14:35 ]

No amount of key presses will shut off the Random Bug Generator


  • MrNGm
  • Registratie: Augustus 2004
  • Laatst online: 05-11 16:22
Je doet een POST terwijl je in je PHP script de gegevens van een GET opvraagt. Je moet dus, of kijken hoe je een POST doet via Javascript, of je verandert het in een GET request.

  • kleautviool
  • Registratie: Mei 2003
  • Laatst online: 13:46
|:( :X

Was dus vergeten om op post.php de connectie met de database te maken |:(

Sorry! Ieder geval bedankt voor de hulp!!!!

Verwijderd

houd je er ook rekening mee dat je query nogal... onveilig is?
Pagina: 1