无法读取未定义的JSON Response Symfony的属性fiscalName

时间:2017-05-30 14:57:47

标签: javascript jquery json ajax symfony-3.2

当您尝试将变量作为索引而不是完整类型传递时,它会生成失败:

new:1668 Uncaught TypeError: Cannot read property 'fiscalName' of undefined at Object.success (new:1668) at i (jquery.min.js:2) at Object.fireWith [as resolveWith] (jquery.min.js:2) at A (jquery.min.js:4) at XMLHttpRequest.<anonymous> (jquery.min.js:4)

它表示特征“财政名称”不存在但存在。是在列表中显示“fiscalName”的值,但它不运行以下代码:

for (var i = 0; i <= parsed.length; i++) {
    $("#match").append('<li id=' + i + '>' + parsed[i].fiscalName + '</li>');
}

我的控制器

public function clientAction(Request $request) {
    $code = $request->get('data');
    $encoders = [
        new XmlEncoder(),
        new JsonEncoder()
    ];
    $normalizers = [new ObjectNormalizer()];
    $em = $this
        ->getDoctrine()
        ->getManager()
        ->getRepository('SharkBaseBundle:Person');
    $client = $em->findByFiscalName($code);
    $serializer = new Serializer($normalizers, $encoders);
    $json = $serializer->serialize($client, 'json');

    return new JsonResponse(['data' => $json]);
}

控制人员的回答

[
    {
        "id" : 3,
        "taxId" : 1,
        "fiscalName" : "drift sl",
        "tradename" : "drift",
        "residence" : "espa\u00f1a",
        "postalCode" : "10600",
        "city" : "plasencia",
        "province" : "c\u00e1ceres",
        "country" : "espa\u00f1a",
        "telephoneNumber" : "666666666",
        "contactPerson" : "juan",
        "contactTelephone" : "666777777",
        "email" : "drift@drift",
        "twitter" : "drift",
        "facebook" : "drift",
        "ccc" : "111",
        "iban" : "11111111111111",
        "bic" : "11111111111",
        "bank" : "santander",
        "commands" : "ingreso pedido",
        "provider" : "true",
        "balance" : 10,
        "routesid" : {
            "id" : 1,
            "name" : "valle",
            "zone" : "valle del jerte",
            "employeeid" : {
                "id" : 1,
                "name" : "pedro",
                "email" : "pedro@pedro.com",
                "telephoneContact" : "666666666",
                "businessAgent" : "true",
                "nif" : "11111111P",
                "handicap" : 1,
                "__initializer__" : null,
                "__cloner__" : null,
                "__isInitialized__" : true
            },
            "__initializer__" : null,
            "__cloner__" : null,
            "__isInitialized__" : true
        },
        "className" : null
    }
]

JS功能

function buscar(letter) {
    $.ajax({
        type : "GET",
        url : "{{ path('ajax_client') }}",
        data : {"data" : letter},
        contentType : 'application/json',
        dataType : "json",
        success : function (data) {
            var arr = $.map(data, function (el) {
                return el
            });
            var parsed = JSON.parse(arr);
            for (var i = 0; i <= parsed.length; i++) {
                $("#match").append('<li id=' + i + '>' + parsed[i].fiscalName + '</li>');
            }
            $("#match li").on('click', function () {
                var idElemet = $(this).attr('id');
                console.log(idElemet);
                $("#search-input").val($(this).text());
                $('input[name="tin"]').val(parsed[idElemet].taxId);
                $('input[name="fiscal_name"]').val(parsed[idElemet].fiscalName);
                $('input[name="postal_code"]').val(parsed[idElemet].postalCode);
                $('input[name="city"]').val(parsed[idElemet].city);
                $('input[name="province"]').val(parsed[idElemet].province);
                $('input[name="country"]').val(parsed[idElemet].country);
            });
        }
    });
}

HTML

<div class="ibox-content">
    <input type="text" placeholder="Buscar..." data-provide="typeahead_2"
            onkeyup="buscar($(this).val())" name="query" id="search-input" 
            autocomplete="off" class="typeahead_2 form-control"/>
    <div>
        <ul id="match"></ul>
    </div>
</div>

0 个答案:

没有答案