2017-02-20 2 views
0

Я не могу получить доступ к данным json, поскольку он всегда терпит неудачу и дает ошибку как SyntaxError: JSON.parse: неожиданный символ в строке 1 столбец 1 из данных JSON search.php выводит данные JSON, но scripts.js выходы JSON.parse ошибку script.jsJSON.parse: неожиданный символ в строке 1 столбец 1 данных JSON (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

Какой результат вы получаете? – Shubham

+4

Вы пытались открыть вкладку «Сетевой браузер» и просмотреть результаты поиска «search.php»? Похоже, что это недействительно JSON, по крайней мере, поскольку у вас есть 'echo $ sql;' в строке 6. –

+0

Еще одна важная проблема: ваш код уязвим для SQL-инъекций. Не используйте конкатенацию строк для построения SQL-запросов. –

ответ

1

решение для вашей проблемы JSON.stringify

Вам нужно преобразовать выходные данные в строку т.е.

var yourDataStr = JSON.stringify(yourdata) 

, а затем проверить свои данные с

JSON.parse(yourDataStr) 

Тогда вы можете получить свой результат. Чтобы подтвердить, вы можете передать свои данные ниже: -

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

Не могли бы вы рассказать мне, где мне это написать? Когда я пишу его в .done(), тогда он дает ошибку как отсутствующий) Список аргументов – AshrafNmd

+0

Я удалил echo $ sqlthen работает хорошо Thanq – AshrafNmd

Смежные вопросы