2017-02-20 3 views
0

Ich kann auf Json-Daten nicht zugreifen, da es immer fehlschlägt und gibt Fehler wie SyntaxError: JSON.parse: unerwartetes Zeichen in Zeile 1 Spalte 1 der JSON Daten search.php die json Daten ausgibt aber scripts.js Ausgänge JSON.parse Fehler script.jsJSON.parse: unerwartetes Zeichen in Zeile 1 Spalte 1 der JSON-Daten (php)

// execute when the DOM is fully loaded 
$(function() { 

    console.log("1"); 

    $("#q").typeahead({ 
     autoselect: true, 
     highlight: true, 
     minLength: 1 
    }, 
    { 
     source: search, 
     templates: { 
      empty: "no places found yet", 
      suggestion: _.template("<p><%- subname %></p>") 
     } 
    }); 

    // re-center map after place is selected from drop-down 
    $("#q").on("typeahead:selected", function(eventObject, suggestion, name) { 


    }); 


}); 
function search(query, cb) 
{ 
    // get places matching query (asynchronously) 
    var parameters = { 
     sub: query 
    }; 
    $.getJSON("search.php", parameters) 
    .done(function(data, textStatus, jqXHR) { 
     cb(data); 
    }) 
    .fail(function(jqXHR, textStatus, errorThrown) { 
     console.log(errorThrown.toString()); 
    }); 
} 

search.php

<?php 

    require(__DIR__ . "/../includes/config.php"); 
    $subjects = []; 
    $sub = $_GET["sub"]."%"; 
    $sql = "SELECT * from subjects where subname LIKE '$sub'"; 
    echo $sql; 
    if($rows = mysqli_query($con,$sql)) 
    { 
     $row = mysqli_fetch_array($rows); 
     while($row){ 
      $subjects[] = [ 

      'subcode' =>$row["subcode"], 
      'subname' => $row["subname"], 
      'reg' => $row["reg"], 
      'courseid' =>$row["courseid"], 
      'branchid' => $row["branchid"], 
      'yrsem' => $row["yrsem"] 
      ]; 
      $row = mysqli_fetch_array($rows); 
     } 
    } 
    // output places as JSON (pretty-printed for debugging convenience) 
    header("Content-type: application/json"); 
    print(json_encode($subjects, JSON_PRETTY_PRINT)); 

?> 
+1

Welches Ergebnis erhalten Sie? – Shubham

+4

Haben Sie versucht, den Tab "Netzwerkbrowser" zu öffnen und die Ergebnisse von 'search.php' zu überprüfen? Es sieht so aus, als wäre es kein gültiger JSON, zumindest seit du in Zeile 6 'echo $ sql; 'hast. –

+0

Ein weiteres wichtiges Problem: Dein Code ist anfällig für SQL-Injektionen. Verwenden Sie zum Erstellen von SQL-Abfragen keine String-Verkettung. –

Antwort

1

Lösung für Ihr Problem ist JSON.stringify

Sie benötigen eine Datenausgabe in String dh

und dann

var yourDataStr = JSON.stringify(yourdata) 
zu validieren mit Ihren Daten

JSON.parse(yourDataStr) 

Dann konvertieren Sie können Ihr Ergebnis erhalten. Zur Validierung können Sie Ihre Daten in der folgenden Funktion übergeben: -

function validateJSON(str) { 
    try { 
     JSON.parse(str); 
    } catch (e) { 
    return false; 
    } 
    return true; 
} 
+0

kannst du mir bitte sagen, wo soll ich das schreiben? Wenn ich es in .done() schreibe, gibt es Fehler als fehlende) Argumentliste – AshrafNmd

+0

Ich entfernte das Echo $ sqlthen funktioniert gut Thanq – AshrafNmd

Verwandte Themen