krijg geen antwoord van mijn json
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
}
}
}
{
$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
laat dan even zien hoe je de request opvraagt?
Frank Nietbelangrijk op 30/12/2012 23:00:36:
laat dan even zien hoe je de request opvraagt?
Code (php)
1
2
3
4
5
6
7
8
9
10
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;
}
}
}
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.
Gewijzigd op 30/12/2012 23:12:29 door Bart C
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??
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
Inderdaad, even uit mijn hoofd is dat editor1.getData()
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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]);
})
}
{
$.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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
})
}
{
$.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?
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)
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
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);
}
}
{
$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?
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
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?
Bart C op 02/01/2013 10:36:43:
Is mijn return waarde nu geen json array?
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'
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.
Waarom dan een while lus?
Dit blijkt na lang zoeken, de oplossing te zijn:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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']);
}
})
}
{
$.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