listo, el problema esta en como armas el array, cambia esto:
$datos=array(
$idx=>array('cod'=>trim($row['codigo']),
"img"=>trim($row['imgurl']),
"dc"=>trim($row['descuento']),
"title"=>trim($row['search']),
"val"=>trim($row['valor'])
)
);
por esto:
$datos[] = array
(
'cod' => trim($row['codigo']),
'img' => trim($row['imgurl']),
'dc' => trim($row['descuento']),
'title' => trim($row['search']),
'val' => trim($row['valor'])
);
y avisa como te va.
siempre puedes verificar el contenido del arreglo usando un:
echo '<pre>',print_r($datos),'</pre>';