[JS/PHP] Ajax postback werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Nic0demus
  • Registratie: September 2007
  • Laatst online: 16-06-2016
Hey mensen,
Ik zit nog even wat te programmeren vanavond, en ik probeer voor een website een XMLHTTPRequest werkend te krijgen, maar ik ben niet zo gek bekend met Javascript. Ik heb dit script (een demo scriptje dat ik bewerkt heb) localhost (en ook online even getest) draaien en zoals ik het zie zou het moeten werken, maar dat doet het niet.
Ik probeer een textbestandje te maken waarin de geposte value geplaatst moet worden door middel van een PHP scriptje.

Het gaat fout in het PHP script, maar het vervelende is dat er niks wordt teruggegeven als er iets fout gaat (lees je ziet de echo's niet)
Zou iemand even mee kunnen kijken waar het fout gaat? Thx

De HTML file met de scripts (index.php)
HTML:
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Store Post in file...</title>

<script language="javascript">
function createXHR() 
{
    var request = false;
        try {
            request = new ActiveXObject('Msxml2.XMLHTTP');
        }
        catch (err2) {
            try {
                request = new ActiveXObject('Microsoft.XMLHTTP');
            }
            catch (err3) {
        try {
            request = new XMLHttpRequest();
        }
        catch (err1) 
        {
            request = false;
        }
            }
        }
    return request;
}
</script>
<script language="JavaScript">

    function Write(url, content)    // url is the script and data is a string of parameters
    { 
        var xhr = createXHR();

        xhr.onreadystatechange=function()
        { 
            if(xhr.readyState == 4)
            {
                // nothing for now
                alert("sent " + url + " " + content);
            }
        }; 
        xhr.open("POST", url, true);        
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.send(content); 
    } 


    function submitForm()
    { 
        var content = document.ajax.sentence.value;
        Write("sciptHandler.php", "file=ajax-post-text.txt&content=" + content);
        var storing = document.getElementById("storage");
        storing.innerHTML = "<p>Now you can view the content of the file you have created</p>. ";
    } 

</script>

</head>

    
<body bgcolor="#FFFFFF">
<h1>Ajax post</h1>

<FORM name="ajax" method="POST" action="">
  <p>
    <input type="text" name="sentence" value="Testdata." size="80">
    <INPUT type="button" value="Submit"  ONCLICK="submitForm()">
  </p>
</FORM>

<div id="storage"> Nothing for now. </div>  

</body>
</html>


Het php script dat de file zou moeten maken: (scriptHandler.php)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

$posted = &$_POST ;
echo $posted;

$fname=$posted["file"];

if(strcmp($fname, "ajax-post-text.txt") != 0)
    die("You are not authorized to change this file.");

$value = $posted["content"];

$nfile = fopen($fname, "w");

if($nfile != false)
{
    fwrite($nfile, $value);
    fclose($nfile);
}   

?>

[ Voor 0% gewijzigd door moto-moi op 12-12-2009 13:08 . Reden: highlighting leest wat hipper :) ]

Life would be so much easier if I had the source code...


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01:31

MueR

Admin Tweakers Discord

is niet lief

Waar gaat het dan precies fout? Heb je die fout al tot een specifiek punt kunnen traceren, of in ieder geval in de PHP code, de javascript of wat dan ook? Wat krijg je als je het PHP script zelf aanroept met een waarde, doet ie het dan wel? (Waarom overigens de filename er in je post :?) Mag je wel schrijven in het bestand? Zie ook Debuggen, hoe doe ik dat nou.

Overigens ook maar even een titelfix gedaan

[ Voor 5% gewijzigd door MueR op 12-12-2009 12:41 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 12-09 17:49

RM-rf

1 2 3 4 5 7 6 8 9

de fout ligt niet in het XMLHttpRequest, maar in de PHP file, dus je 'probleemstelling' is al fout als je de titel noemt '[js] XMLHttpRequest'...


dat zou dus gewoon '[PHP] bestand slaat niet op' moeten zijn en je kunt al je code van dat XMLHttpRequest weglaten...
verder moet je dus gewoon dat PHP-scrpt zelf direkt in je browser oproepen en dan zie je eventuele echo's (of die()'s) wél..
dat is verder imho iets dat erg makkelijk is en geen grote problemen zou moeten opleveren.


verder, qua concept vind ik het een beetje vreemd een XMLHttpRequest te gebruiken maar het hooguit te benutten als en statische 'submit' maar de eventueel geretourneerde output verder niet op te roepen....
je gebruikt dan slechts de helft van de mogelijkheden van een 'request'...
het bespaartw aarschijnlijk ook voor de gebruiker ook juist veel moeite door wel slim gebruik te maken ervan dat je XMLHttpRequest ook waardes teruggeven kan..

[ Voor 5% gewijzigd door RM-rf op 12-12-2009 12:14 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


Acties:
  • 0 Henk 'm!

  • Asator
  • Registratie: December 2009
  • Laatst online: 12-02-2024
JavaScript:
1
2
3
4
5
6
7
    function submitForm()
    { 
        var content = document.ajax.sentence.value;
        Write("scRRRRRiptHandler.php", "file=ajax-post-text.txt&content=" + content);
        var storing = document.getElementById("storage");
        storing.innerHTML = "<p>Now you can view the content of the file you have created</p>. ";
    } 


Voor de rest is er niks mis met die code zover ik kan zien.

Acties:
  • 0 Henk 'm!

  • Nic0demus
  • Registratie: September 2007
  • Laatst online: 16-06-2016
Ik snap dat dit niet de bedoeling is van een XMLHTTPRequest, ik heb dit alleen gepakt zodat ik het later kan gaan uitbouwen en er ook een GET in kan gaan bouwen. Je moet toch ergens beginnen als je er geen verstand van hebt.

En MueR, ik heb verder heel weinig aan je post. Ik zei gewoon dat ik wist dat het in het PHP script fout ging.

Als ik zeg dat ik dus niet bekend ben met XMLHTTPRequest, dan zou je in plaats van een reactie als:
"Waarom overigens de filename er in je post :?"
ook kunnen uitleggen wat er dan normaliter in kan staan zodat ik er wél iets aan heb.

RM-rf. Ik zal proberen of ik het php scriptje in de browser kan krijgen. Thx iig.
Eens kijken wat er dan fout gaat.

-->Edit.
Als ik het form gewoon laat posten dmv een normale submit, dan werkt het niet goed meer omdat ik in Write() een string klaarmaak die naar de file gePOST moet worden via javascript. Ik weet dus niet hoe ik het zoals RM-rf opperde dan alsnog in de browser ge-output kan krijgen. Kan iemand mij even in de goede richting sturen? Bvd.

[ Voor 19% gewijzigd door Nic0demus op 12-12-2009 13:12 ]

Life would be so much easier if I had the source code...


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01:31

MueR

Admin Tweakers Discord

is niet lief

Nic0demus schreef op zaterdag 12 december 2009 @ 12:59:
En MueR, ik heb verder heel weinig aan je post. Ik zei gewoon dat ik wist dat het in het PHP script fout ging.
Hoe dan? Je laat nergens terug komen dat je dit als enige point of failure hebt aangewezen. Niet door middel van debugging in ieder geval. Ook geef je niet aan waar in je php script het fout gaat. Dat moet je kunnen achterhalen door simpelweg te debuggen.
Nic0demus schreef op zaterdag 12 december 2009 @ 12:59:
Als ik zeg dat ik dus niet bekend ben met XMLHTTPRequest, dan zou je in plaats van een reactie als:
"Waarom overigens de filename er in je post :?"
ook kunnen uitleggen wat er dan normaliter in kan staan zodat ik er wél iets aan heb.
Ik zou natuurlijk gewoon een PHP editor open kunnen trekken en het voor je debuggen, maar daar ben ik niet voor. Wel lief overigens dat je 1 vraag uit mn post pakt, en de rest negeert. We zijn geen quickfix desk. Debuggen is iets wat elke programmeur moet doen en met Asator in "\[JS/PHP] Ajax postback werkt niet" zou je volgens mij al een stuk verder komen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Nic0demus
  • Registratie: September 2007
  • Laatst online: 16-06-2016
Zie edit van vorige post.

MueR,
Ik heb gedebugd, de javascript code wordt gewoon goed uitgevoerd, een simpele alert voordat er naar de phpHandler wordt gepost bewijst dat. Ik heb wel degelijk gedebugd, maar ik dacht dat ik dat niet allemaal hoefde uit te leggen.

[ Voor 82% gewijzigd door Nic0demus op 12-12-2009 13:17 ]

Life would be so much easier if I had the source code...


Acties:
  • 0 Henk 'm!

  • Asator
  • Registratie: December 2009
  • Laatst online: 12-02-2024
Als je nou nog is stukje omhoog scrolled en mijn vorige post leest dan zie je dat je gewoon een spelling fout hebt gemaakt bij het doorsturen naar scriptHandler.php

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:53

crisp

Devver

Pixelated

Nic0demus schreef op zaterdag 12 december 2009 @ 12:59:
[...]
Als ik het form gewoon laat posten dmv een normale submit, dan werkt het niet goed meer omdat ik in Write() een string klaarmaak die naar de file gePOST moet worden via javascript. Ik weet dus niet hoe ik het zoals RM-rf opperde dan alsnog in de browser ge-output kan krijgen. Kan iemand mij even in de goede richting sturen? Bvd.
Dan zorg je dat het formulier zonder javascript ook dezelfde data opstuurt. Ajax is geen alternatief voor normale formverwerking maar een aanvulling daarop met als doel de gebruiksvriendelijkheid te verhogen. Nu is er helemaal geen sprake van gebruiksvriendelijkheid voor clients die geen javascript-support hebben of het uit hebben staan; het werkt dan immers niet.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Nic0demus
  • Registratie: September 2007
  • Laatst online: 16-06-2016
Thanks Asator, weet je dat ik dat stukje al 4 keer heb overgelezen? Typo gewoon niet gezien :/

En Crisp, ja dat had ik begrepen, ik ga nog <noscripts> toevoegen en alles maar ik wilde gewoon eerst even dit werkend hebben en zorgen dat ik het begreep. Het is maar een testscriptje. Bedankt voor de reply's allemaal.

Life would be so much easier if I had the source code...


Acties:
  • 0 Henk 'm!

  • Kiphaas7
  • Registratie: Februari 2005
  • Laatst online: 11-09 08:26
Nic0demus schreef op zaterdag 12 december 2009 @ 13:30:
En Crisp, ja dat had ik begrepen, ik ga nog <noscripts> toevoegen en alles maar ik wilde gewoon eerst even dit werkend hebben en zorgen dat ik het begreep. Het is maar een testscriptje. Bedankt voor de reply's allemaal.
<noscripts> zijn normaliter helemaal niet nodig, en in dit geval helemaal niet. Je maakt eerst een formulier dat werkt zonder javascript, en maakt het dan gebruiksvriendelijker met javascript. En niet andersom zoals jij nu doet. Zelfs bij testscriptjes is het handig om die werkwijze te hanteren.

[ Voor 5% gewijzigd door Kiphaas7 op 12-12-2009 13:52 ]

Pagina: 1