geen response van mijn ajax call
ik heb een probleem met mijn ajax.
het heeft gewerkt maar om een of andere reden krijg ik een error terug en wel de volgende:
TypeError: data is null.
dat komt neer op de regel : if(data.success.
hier onder mijn javascript en controller.
ben benieuwd wat het nu is wat ik heb geen idee
alvast bedankt
Mvg Ralph
de var name geeft de waarde weer die in het input veld staat als ik hem alert die doet het dus.
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
28
29
30
31
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
<?php
function tagInput(){
var name = $("input#tag_invoeren").val();
if(name){
$.ajax(
{
type: "POST",
url: "<?php echo Settings::$url;?>/"+ReadCookie('lang')+"/adminajax/content/savetag",
data: { txt : name },
dataType: 'json',
success: function(data){
if(data.success)
{
$('.admin_tag').show().html('<h3>Tag is toegevoegd</h3>').delay(2000).fadeOut(200, function(){getSubTab('tag overzicht');});
}
else
{
$('.admin_tag_false').html('<h3>Tag bestaat al</h3>').show().delay(5000).fadeOut(1000);
}
},
error: function(){alert('jammer jongen, hij doet het niet');}
});
}
else
{
$('.admin_tag_false').html('<h3>Vul tag in.</h3>').show().delay(5000).fadeOut(1000);
}
}
?>
function tagInput(){
var name = $("input#tag_invoeren").val();
if(name){
$.ajax(
{
type: "POST",
url: "<?php echo Settings::$url;?>/"+ReadCookie('lang')+"/adminajax/content/savetag",
data: { txt : name },
dataType: 'json',
success: function(data){
if(data.success)
{
$('.admin_tag').show().html('<h3>Tag is toegevoegd</h3>').delay(2000).fadeOut(200, function(){getSubTab('tag overzicht');});
}
else
{
$('.admin_tag_false').html('<h3>Tag bestaat al</h3>').show().delay(5000).fadeOut(1000);
}
},
error: function(){alert('jammer jongen, hij doet het niet');}
});
}
else
{
$('.admin_tag_false').html('<h3>Vul tag in.</h3>').show().delay(5000).fadeOut(1000);
}
}
?>
de savetag functie
ook var_dump() laat hier niks zien.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
if($this->arguments[0] == "savetag")
{
$tekst = $_POST['txt'];
echo json_encode(array('success' => true));
echo $tekst;
$sql_select="SELECT `name` FROM tags WHERE `name` = ".Database::quote();
$test = Database::execute($sql_select);
var_dump($sql_select);
if($test[0]['name']!= '')
{
echo json_encode(array('success' => false));
}
else
{
$sql_insert="INSERT INTO `tags`(name) VALUES (".Database::quote($_POST['txt']).")";
database::insert($sql_insert);
}
}
?>
if($this->arguments[0] == "savetag")
{
$tekst = $_POST['txt'];
echo json_encode(array('success' => true));
echo $tekst;
$sql_select="SELECT `name` FROM tags WHERE `name` = ".Database::quote();
$test = Database::execute($sql_select);
var_dump($sql_select);
if($test[0]['name']!= '')
{
echo json_encode(array('success' => false));
}
else
{
$sql_insert="INSERT INTO `tags`(name) VALUES (".Database::quote($_POST['txt']).")";
database::insert($sql_insert);
}
}
?>
Je query wordt dus:
"SELECT `name` FROM tags WHERE `name` = ";
Als je niets aan de functie quote geeft, krijg je ook niets terug. Ik ga ervanuit dat dit niet is wat je wilt.
Verder moet je als je JSON wilt terugsturen altijd maar 1 echo doen. Niet meerdere.
ok ook na het geven van een waarde krijg ik de zelfde error maar in elk geval bedankt voor het opmerekn van deze fout
Vervolgens dan iets met de tweede opmerking gaan doen. Zolang je meerdere echo's geeft zal je problemen blijven ondervinden. Javascript verwacht namelijk 1 json encoded datastring terug en niet meerdere.
Toevoeging op 14/05/2013 10:48:07:
denk dat het probleem ergens anders zit want overal waar ik een return moet krijgen werkt het niet
Als de php pagina gewoon goed werkt, kan je de ajax call testen in je document. Omdat je weet dat de afhandeling op de server goed gaat, moet elke dan nog optredende fout in je javascript zitten. Plaatst dan eerst een alert in je success functie om te zien of je daar uberhaupt wel komt.
Toevoeging op 14/05/2013 11:14:52:
het is idd wel handig om de error reporting aan te zetten werk samen met een collega in github en hij zet het constant uit kennelijk
Toevoeging op 14/05/2013 11:33:31:
was een ; vergeten kennelijk een paar 100 regels hoger nu werkt het wel bedannkt Erwin
Door schade en schande wijs geworden zullen we maar zeggen :-)