krijg geen antwoord van mijn json

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bart C

Bart C

30/12/2012 22:53:19
Quote Anchor link
Hoi,

ik krijg vanuit mijn xmlHttp-request geen antwoord terug hoewel de query gewoon werkt.
Als ik buiten de if een gewone plain text echo, werkt het wel.

Ik ben die myqsli aan het uittesten en heb gekozen voor de prepare-methode.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(isset($_POST['form']))
{
    $form = $_POST['form'];
    $stmt = $mysqli->prepare('SELECT content FROM tbl_content WHERE formtype = ?');

    $stmt->bind_param('s', $form);
    $stmt->bind_result($content);
    if ($stmt->execute())
    {
        while ( $stmt->fetch() )
        {
            echo $content;
        }
    }
}
Gewijzigd op 30/12/2012 23:07:34 door Bart C
 
PHP hulp

PHP hulp

22/12/2024 20:35:48
 
Frank Nietbelangrijk

Frank Nietbelangrijk

30/12/2012 23:00:36
Quote Anchor link
laat dan even zien hoe je de request opvraagt?
 
Bart C

Bart C

30/12/2012 23:05:39
Quote Anchor link
Frank Nietbelangrijk op 30/12/2012 23:00:36:
laat dan even zien hoe je de request opvraagt?



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
{
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
       xmlDoc = xmlHttp.responseText;
       if(xmlDoc != '' && xmlDoc != undefined)
       {        
            var textarea = document.getElementById("editor1");
            textarea.innerHTML = xmlDoc;
       }
    }
}


Toevoeging op 30/12/2012 23:10:15:

UPDATE : probleem opgelost. Ik heb gewoon de verkeerde POST-waarde benoemd.

Maar toch krijg ik hem niet in mijn textarea met voorgaande code.
Ik werk wel met ckeditor. Daarbij moet ik een textarea maken en die een bepaalde name meegeven. Daarin kan ik dan de tekst plaatsen.
Misschien werkt dit niet met een XmlHttp-request.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<textarea name="editor1" id="editor1"></textarea>
Gewijzigd op 30/12/2012 23:12:29 door Bart C
 
No One

No One

31/12/2012 09:36:26
Quote Anchor link
je moet even kijken naar de api van ckeditor...ik weet van tinyMCE dat er een api is waarbij je de invoer kan pakken etc. misschien is dat met ckeditor ook zo??
 
Bart C

Bart C

01/01/2013 14:28:46
Quote Anchor link
Henze Berkheij op 31/12/2012 09:36:26:
je moet even kijken naar de api van ckeditor...ik weet van tinyMCE dat er een api is waarbij je de invoer kan pakken etc. misschien is dat met ckeditor ook zo??


Dag Henze,
er moet inderdaad zo'n api zijn. Dat zoek ik verder even uit.
Gewijzigd op 01/01/2013 14:44:51 door Bart C
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/01/2013 18:34:47
Quote Anchor link
Inderdaad, even uit mijn hoofd is dat editor1.getData()
 
Bart C

Bart C

01/01/2013 21:16:12
Quote Anchor link
Ger van Steenderen op 01/01/2013 18:34:47:
Inderdaad, even uit mijn hoofd is dat editor1.getData()


Dag Ger,

dat klopt!

Moet ik hierbij nog een fouthandeling inbouwen?
bvb if (xmlHttp.readyState==4 || ...)

En hoe kan ik nu met ajax de waarden uit een array ophalen?

Dit is mijn return:
[{"id":1,"content":"<p>Dit is een <strong>testje<\/strong><\/p>\r\n","formtype":"home"}]

Heb al veel gezocht en geprobeerd maar tevergeefs...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function ajaxrequest(str)
{
    $.ajax({
      type: 'POST',
      url: 'responsexml.php',
      datatype: 'json',
      data: { form : str, sid : Math.random() }
    }).done(function( msg ){
      xmlDoc = msg;
        document.getElementById('id').value = xmlDoc[0];
        document.getElementById('type').value = xmlDoc[1];
        CKEDITOR.instances.editor1.setData(xmlDoc[2]);
    })
}
Gewijzigd op 01/01/2013 23:28:37 door Bart C
 
No One

No One

02/01/2013 09:31:32
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function ajaxrequest(str)
{
    $.ajax({
      type: 'POST',
      url: 'responsexml.php',
      datatype: 'json',
      data: { form : str, sid : Math.random() }
    }).done(function( msg ){
      xmlDoc = msg;
        document.getElementById('id').value = xmlDoc.id;
        document.getElementById('type').value = xmlDoc.formtype;
        CKEDITOR.instances.editor1.setData(xmlDoc.content);
    })
}

zoiets?
 
Bart C

Bart C

02/01/2013 10:24:18
Quote Anchor link
Henze Berkheij op 02/01/2013 09:31:32:
zoiets?


Dacht ik ook aan maar niet dus...
Hier bouw ik mijn array op:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
if(isset($_POST['formtype']))
{
    $form = $_POST['formtype'];
    $stmt = $mysqli->prepare('SELECT id, formtype, content FROM tbl_content WHERE formtype = ?');

    $stmt->bind_param('s', $form);
    $stmt->execute();
    
    $meta = $stmt->result_metadata();

    while ($field = $meta->fetch_field())
    {
      $parameters[] = &$row[$field->name];
    }

    call_user_func_array(array($stmt, 'bind_result'), $parameters);

    while ($stmt->fetch())
    {
        foreach($row as $key => $val)
        {
            $x[$key] = $val;
        }
        $results[] = $x;
        echo json_encode($results);
    }
}


en dat is dus nog steeds mijn return:
[{"id":1,"content":"<p>Dit is een <strong>testje<\/strong><\/p>\r\n","formtype":"home"}]

Misschien kan het anders?
 
Moose -

Moose -

02/01/2013 10:26:34
Quote Anchor link
variable results uit je while loop halen, en het pas uiteindelijk echo'n. Dan krijg je maar 1 return waarde terug, een json array met data
 
Bart C

Bart C

02/01/2013 10:36:43
Quote Anchor link
Not Moose op 02/01/2013 10:26:34:
Dan krijg je maar 1 return waarde terug, een json array met data


Is mijn return waarde nu geen json array?
 
Moose -

Moose -

02/01/2013 10:39:18
Quote Anchor link
Bart C op 02/01/2013 10:36:43:
Not Moose op 02/01/2013 10:26:34:
Dan krijg je maar 1 return waarde terug, een json array met data


Is mijn return waarde nu geen json array?



Weet ik niet zeker, je echo't namelijk meerdere keren een json string, dus ik vermoed dat je een error krijgt als 'geen geldige json waarde'
 
Bart C

Bart C

02/01/2013 10:55:45
Quote Anchor link
Not Moose op 02/01/2013 10:39:18:
Weet ik niet zeker, je echo't namelijk meerdere keren een json string, dus ik vermoed dat je een error krijgt als 'geen geldige json waarde'


Ik heb de echo buiten de while gezet. Nu, op zich is het nu wel correct maar het maakt geen verschil, de while-loop kan toch maar maximum één keer doorlopen worden (maximum één enkele record die opgehaald wordt).

Ik heb daarop ook geen enkele foutmelding gehad.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

02/01/2013 11:36:55
Quote Anchor link
Waarom dan een while lus?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$result
= $stmt->fetch_assoc();
echo json_encode($result);
?>
 
Bart C

Bart C

02/01/2013 20:36:41
Quote Anchor link
Maar le question jambon (de hamvraag) blijft: hoe haal ik de waarden uit die array om ze in mijn formuliervelden te plaatsen...

Dit blijkt na lang zoeken, de oplossing te zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function ajaxrequest(str)
{
    $.ajax({
      type: 'POST',
      url: 'responsexml.php',
      datatype: 'json',
      data: { formtype : str, sid : Math.random() }
    }).done(function( msg ){
      xmlDoc = msg;
        var feed = JSON.parse(xmlDoc);
        for (var i = 0; i < feed.length; i++)
        {
            document.getElementById('id').value = feed[i]['id'];
            document.getElementById('formtype').value = feed[i]['formtype'];
            CKEDITOR.instances.editor1.setData(feed[i]['content']);
        }
    })
}
Gewijzigd op 02/01/2013 21:31:13 door Bart C
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.