it-swarm.com.de

wie bekomme ich mit json_encode Daten von PHP nach Javascript?

Ich versuche Traceroutes auf Google Maps abzubilden.

Ich habe ein Array in PHP mit Traceroute-Daten als

$c=ip,latitude,longitude, 2nd ip, its latitude, longitude, ....target ip, its lat, its lng

Ich habe json_encode($c, JSON_FORCE_OBJECT) verwendet und die Datei gespeichert

Wie kann ich nun mit Javascript darauf zugreifen, indem ich es direkt mit einem neuen JS-Objekt gleichsetze?

früher hatte ich ein Datenformat wie dieses auf der Festplatte

var data12 = {

"route":[
{
    "ip": "some ip",

    "longitude": "some lng",

    "latitude": "some lat",

.....

und in meinem javascript wurde es als verwendet

data=data12.route;

und greift dann einfach auf die Mitglieder als data [1] .latitude zu

9
user494461

Ich empfehle die Verwendung der jQuery-Bibliothek . Die Minified-Version ist nur 31 kB groß und bietet viele nützliche Funktionen.

Für das Parsen von JSON einfach

var obj = jQuery.parseJSON ( ' {"name" : "John"} ' );

Sie können jetzt einfach auf alles zugreifen:

alert ( obj.name );

Hinweis : jQuery verwendet - sofern verfügbar - den nativen JSON-Parser des Browsers, der sehr schnell und viel sicherer ist als die eval ()-Methode.

Edit : Um Daten vom Server zum Client zu bekommen, gibt es zwei Möglichkeiten:

1.) Verwenden Sie eine AJAX -Anforderung (ganz einfach mit jQuery):

   $.ajax ( {
       url: "yourscript.php",
       dataType: "json",
       success: function ( data, textStatus, jqXHR ) {
           // process the data, you only need the "data" argument
           // jQuery will automatically parse the JSON for you!
       }
   } );

2.) Schreiben Sie das JSON-Objekt bei der Seitengenerierung in den Javascript-Quellcode:

   <?php
       $json = json_encode ( $your_array, JSON_FORCE_OBJECT );
   ?>

   <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>

   <script type="text/javascript">
   //<![CDATA[

   var json_obj = jQuery.parseJSON ( ' + <?php echo $json; ?> + ' );

   //]]>
   </script>
26
Sammy S.

Ich könnte das JSON-Array mit PHP json_encode () vom Backend erhalten, wie im folgenden Beispiel:

<!doctype html>
<html>
    <script type="text/javascript">
        var json = <?php echo json_encode(array(1 => '123', 'abc' => 'abd', 2 => 5));?>;
        console.log(json[1]);
        console.log(json.abc);
    </script>        
</html>

Keine Anführungszeichen bedeutet, dass das, was gedruckt wurde, ausgewertet wird. Dies ist ein schneller Hack, den wir häufig verwendet haben, um unserer AJAX-Seite schnell Anfangswerte hinzuzufügen.

1
fred

Ich weiß, das ist alt, aber ich habe vor kurzem nach diesem Suchen gesucht. Keine der Antworten hier funktionierte für meinen Fall, da meine Werte Zitate enthielten. Die Idee hierbei ist, das Array vor dem Echo auf der Seite mit Base64 zu codieren. Auf diese Weise stehen die Zitate nicht in Konflikt.

< ?php
$names = ['first' => "some'name"];
?>
var names = JSON.parse(atob('< ?php echo base64_encode(json_encode($names)); ?>'));
console.log(names['first']);
1
HoofHarted

Diese Funktion funktioniert für Sie, denke ich:

    function json_encode4js($data) {
    $result = '{';
    $separator = '';
    $count = 0;
    foreach ($data as $key => $val) {

        $result .= $separator . $key . ':';
        if (is_array($val)){
            $result .= json_encode4js($val).(!$separator && count($data) != $count ? ",":"");
            continue;
        }
        if (is_int($val)) {
            $result .= $val;
        } elseif (is_string($val)) {
            $result .= '"' . str_replace('"', '\"', $val) . '"';
        } elseif (is_bool($val)) {
            $result .= $val ? 'true' : 'false';
        } elseif (is_null($val)) {
            $result .= 'null';
        } else {
            $result .= $val;
        }

        $separator = ', ';
        $count++;
    }

    $result .= '}';

    return $result;
}

$a = array(
"string"=>'text',
'jsobj'=>[
    "string"=>'text',
    'jsobj'=>'text2',
    "bool"=>false
    ],
"bool"=>false);

var_dump( json_encode4js($a) ); //output: string(77) "{string:"text", jsobj:{string:"text", jsobj:"text2", bool:false}, bool:false}" 

var_dump( json_encode($a));//output: string(85) "{"string":"text","jsobj":{"string":"text","jsobj":"text2","bool":false},"bool":false}"
0
Ahmet K AKARGUL

keine Notwendigkeit für Jquery, nur:

    var array= <?php echo json_encode($array); ?>;
    console.log(array->foo);
0

HTML

<select name="sub" id="subcat" class="form-control" required="required">

</select>

PHP

$this->load->model('MainModel');
$subvalue = $this->MainModel->loadSubData($var);
echo json_encode($subvalue);
//if MVC
// or you can just output your SQLi data to json_encode()

JS

$("#maincat").change(function(){
  var status = this.value;

  $.ajax({
    type: 'POST',
    url: 'home/subcat/'+status,
    success: function(data){
        var option = '';
        var obj = JSON.parse(data);
        if(obj.length > 0){
            for (var i=0;i<obj.length;i++){
            option += '<option value="'+ obj[i].id + '">' + obj[i].name + '</option>';  
            }
            //Now populate the second dropdown i.e "Sub Category"
            $('#subcat').children("option").remove();
            $('#subcat').append(option);
        }else{
            option = '<option value="">No Sub Category Found</option>';
            $('#subcat').children("option").remove();
            $('#subcat').append(option);
        }       
    },
    error: function(){
    alert('failure');
    }
});
0
Tayyab Hayat

wir müssen das json-Codierungsformat in Javascript anzeigen, indem Sie Folgendes verwenden:

var responseNew = JSON.parse(' {"name" : "John"} ' );
alert(responseNew['name']);
0
Elangovan