Uncaught SyntaxError: неожиданный токен l в JSON в позиции 0 при попытке проанализировать JSON - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь показать значения json в раскрывающемся списке, показанном внутри таблицы.Мое значение JSON может быть таким, как показано ниже:

 var ids1 = [{"pid":"23221","des":"2321"},{"pid":"1301","des":"1301"},{"pid":"1003","des":"1003"}]

 var ids = [{"pid":"laptop","des":"laptop"},{"pid":"IPAD mini.","des":"IPAD mini."}]

Это могут быть числа, как показано в ids1 , или могут быть строковые значения, как показано в ids , или могутbe может получить комбинацию.

Когда я использую приведенный ниже код, значения в раскрывающемся списке отображаются в кавычках .

  $("<option />").text(JSON.stringify(value.des)).val(JSON.stringify(value.pid)).appendTo(productDropdown);

При использованиипод кодом, отображающим значения в раскрывающемся списке, кавычки не отображаются для целочисленных значений, показанных в ids1, но при попытке передать идентификаторы и показать в списке возникает исключение.

$("<option />").text(JSON.parse(value.des)).val(JSON.parse(value.pid)).appendTo(productDropdown);

Исключение припытается передать идентификаторы в цикле.

Uncaught SyntaxError: Unexpected token l in JSON at position 0

Демонстрационная ссылка: http://plnkr.co/edit/ilvGQPiy3nEKBuH8q46b?p=preview

js код:

 function populateSelect(ids) {
     var ids1 = [{"pid":"23221","des":"2321"},{"pid":"1301","des":"1301"},{"pid":"1003","des":"1003"}]
     var ids = [{"pid":"laptop","des":"laptop"},{"pid":"IPAD mini.","des":"IPAD mini."}]

      var productDropdown = $(".product");

    $.each(ids, function(index,value) {
      $("<option />").text(JSON.parse(value.des)).val(JSON.parse(value.pid)).appendTo(productDropdown);
    //    $("<option />").text(JSON.stringify(value.des)).val(JSON.stringify(value.pid)).appendTo(productDropdown);
    });
}

$(document).ready(function(){
    populateSelect(); 
});

1 Ответ

0 голосов
/ 15 ноября 2018

Нет НИКАКОЙ причины, по которой вы должны использовать методы JSON в своем коде. Они предназначены для преобразования строки JSON, у вас есть объект. Так что вы должны просто читать свойства.

function populateSelect(ids) {
     var ids1 = [{"pid":"23221","des":"2321"},{"pid":"1301","des":"1301"},{"pid":"1003","des":"1003"}]
     var ids = [{"pid":"laptop","des":"laptop"},{"pid":"IPAD mini.","des":"IPAD mini."}]

      var productDropdown = $(".product");

    $.each(ids, function(index,value) {
      $("<option />").text(value.des).val(value.pid).appendTo(productDropdown);
    });
}

$(document).ready(function(){
    populateSelect(); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="product"></select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...