Ich erhalte einige Daten vom Server und zeige sie auf dem Bildschirm an. Mein JavaScript wird unten angezeigt und der PHP-Servercode folgt. Mein Problem ist, wenn die Datenbank null zurückgibt (zum Beispiel den Titel). PHP erkennt es als NULL und JavaScript erkennt es wiederum als null. Ich zeige es dann auf dem Bildschirm an und es wird nicht als null angezeigt, sondern als "null". Ich möchte den Text nicht "null" anzeigen, aber nichts anzeigen.

Um dieses Problem zu umgehen, kann ich data.title durch ((data.title)?data.title:'') ersetzen. Ist dies der beste Weg, um damit umzugehen?

$.get('server.php',{id:1855},
    function (data)
    {
        //data={"id":"1855","firstname":"Pat","lastname":"Prentice","title":null}
        $('#my_id').html('<dl><dt>Name:</dt><dd>'+data.firstname+' '+data.lastname+'</dd>'+'<dt>Title:</dt><dd>'+data.title+'</dd>');
    },'json');

Server.php gibt Folgendes zurück:

<?php
$sql_output=array('id'=> 1855, 'firstname'=>'Pat','lastname'=>Prentice,'title'=>NULL);
echo json_encode($array);
?>
0
user1032531 9 Okt. 2012 im 20:46

3 Antworten

Beste Antwort

Wird irgendwie die beste Antwort als Kommentar liefern:

Sie können in Ihrer Abfrage auch den Standardwert "" (oder etwas anderes) festlegen, sodass niemals null zurückgegeben wird

Da die Daten aus einer Datenbank abgerufen werden, gehen Sie einfach wie folgt vor:

SELECT COALESCE(title,'') AS title, bla, bla, bla
0
user1032531 16 Okt. 2012 im 15:59

Nur für eine Änderung der Form können Sie auch OR verwenden, z. dd>' + (data.title || '') + '</dd...

Wenn title undefined oder null ist, wird die leere Zeichenfolge an Ort und Stelle verwendet. Dies ist leichter zu lesen als das Formular (condition)?r1:r2. Aber beide sind unzuverlässig, wie Doublesharp in Kommentaren hervorhebt.

1
Abhishek Mishra 9 Okt. 2012 im 17:03

Ich würde empfehlen, den Wert auf eine leere Zeichenfolge in Ihrem PHP-Code zu setzen. Wenn Anweisungen in JavaScript nach False-Bedingungen suchen.

<?php
$sql_output=array('id'=> 1855, 'firstname'=>'Pat','lastname'=>Prentice,'title'=>NULL);
foreach ($sql_output as &$row){ // pass by reference
    foreach($row as $key=>$value){
        if ($value==null) $row[$key] = "";
    }
}
echo json_encode($sql_output);
?>
1
doublesharp 9 Okt. 2012 im 17:00