TypeError:无效' in'来自ajax的操作数a

时间:2017-01-05 13:24:41

标签: javascript jquery ajax symfony

我尝试使用jquery为symfony中的每个国家/地区选择一个新列表。 为此,我使用ajax,但我有这个错误:

TypeError: invalid 'in' operand a

我的jquery:

$('.country').change(function(){
    var val = $(this).val();
        $.ajax({
            type: "POST",
            url: "{{ path('ajax') }}?country_id=" + val,
            success: function(data) {
                $('.extension').html('');
                $.each(data, function(k, v) {
                    $('.extension').append('<option value="' + v + '">' + k + '</option>');
                });
            }
        });
    return false;
});

我的路径ajax在控制器中调用我的函数ajax:

public function ajaxAction(Request $request) {
    if (!$request->isXmlHttpRequest()) {
        throw new NotFoundHttpException();
    }

    // Get extension ID
    $numCountry = $request->query->get('country_id');

    $result = array();

    $extensions  = $this->get('extension')->getExtensionByCountry($numCountry, array('name' => 'asc'));
    foreach ($extensions as $extension) {
        //$result[$extension->getName()] = $extension->getId();
        $result['test'] = 1;
    }

    return new JsonResponse($result);
}

2 个答案:

答案 0 :(得分:2)

您正在尝试迭代字符串,导致此错误。请尝试使用$.parseJSON(data)

success: function(data) {
       $('.extension').html('');
       data = $.parseJSON(data);
       $.each(data, function(k, v) {
             $('.extension').append('<option value="' + v + '">' + k + '</option>');
        });
}

了解更多$.parseJson

答案 1 :(得分:0)

您确定您的数据是数组吗?这种正常情况发生在你使用&#34;每个&#34;在非数组元素上。

我想建议你更多的东西: