我尝试使用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);
}
答案 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;在非数组元素上。
我想建议你更多的东西: