【问题标题】:TypeError: invalid 'in' operand a from ajaxTypeError:来自ajax的无效'in'操作数a
【发布时间】:2017-01-05 13:24:41
【问题描述】:

我尝试使用 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);
}

【问题讨论】:

  • 你的数据怎么样?
  • 你在那里迭代一个字符串..使用 $.parseJSON(data)

标签: javascript jquery ajax symfony


【解决方案1】:

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

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

阅读更多$.parseJson

【讨论】:

  • 感谢您的回答,我用 data = $.parseJSON(data); 进行了测试我现在有这个错误:SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
  • 请把 console.log(data) 告诉我你收到了什么。
  • console.log(data) 返回我页面的代码...我不明白为什么会这样
  • 它在ajax 请求上达到你的方法?
  • 我不认为,为了测试我写在我的函数中'死;'什么都没有改变,所以他没有达到我的功能?
【解决方案2】:

你确定你的数据是一个数组吗?当您在非数组元素上使用“each”时,通常会发生这种情况。

我想再给你一些建议:

【讨论】:

  • 感谢您的回答,是的,我得到了扩展名列表,所以我需要一个数组。我有没有数组的测试,只有一个假值:$result['test'] = 1;但我有同样的错误:/ 现在我已经调用我的路径 'ajax' 只是为了测试,我会改变它:)
猜你喜欢
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-11-08
  • 2018-12-08
相关资源
最近更新 更多