我正在开发一个电子商务网站项目,我遇到了问题, 实际上我有一个产品详细信息页面,每个产品我有一个颜色,所以我试图显示与ajax颜色匹配的图像。这是产品页面: 当我点击颜色时,我得到颜色并启动ajax功能
这是我的代码:
“树枝”:
<a class="color1" onclick="changecolor('{{i.color}}', {{i.idproduit.idproduit}});" style="background-color: {{i.color}}" href="javascript:void(0);"></a>
...
<script>
function changecolor(color, idprod) {
var idprod = idprod;
var color = color;
var DATA = 'idprod=' + idprod + '&color=' + color;
$.ajax({
type: "POST",
url: "{{ path('change_product_color')}}",
data: DATA,
cache: false,
success: function (data) {
$('#resultats').html(data);
}
});
return false;
}
</script>
“changecolor.html.twig”
<div id="resultats" class="tovar_view_fotos clearfix">
<div id="slider2" class="flexslider">
<ul class="slides">
<li><a href="javascript:void(0);" ><img src="{{ asset(path('my_image_route1', {'id': pimg.idimage})) }}" alt="" /></a></li>
<li><a href="javascript:void(0);" ><img src="{{ asset(path('my_image_route2', {'id': pimg.idimage})) }}" alt="" /></a></li>
</ul>
</div>
<div id="carousel2" class="flexslider">
<ul class="slides">
<li><a href="javascript:void(0);" ><img src="{{ asset(path('my_image_route1', {'id': pimg.idimage})) }}" alt="" /></a></li>
<li><a href="javascript:void(0);" ><img src="{{ asset(path('my_image_route2', {'id': pimg.idimage})) }}" alt="" /></a></li>
</ul>
</div>
</div>
“控制器中的行动”
public function changeColorAction() {
$request = $this->container->get('request');
if ($request->isXmlHttpRequest()) {
$id=$request->request->get('idprod');
$c=$request->request->get('color');
$em = $this->getDoctrine()->getManager();
$produit = $em->getRepository('WelcomeBundle:Produit')->find($id);
$stock = $em->getRepository('WelcomeBundle:Stock')->find($produit->getIdstock());
$boutique = $em->getRepository('WelcomeBundle:Boutique')->find($stock->getIdboutique());
$colors = $em->getRepository('WelcomeBundle:Produitimage')->findBy(array('idproduit' => $id));
$sizes = $em->getRepository('WelcomeBundle:Produitsize')->findBy(array('idproduit' => $id));
$query5 = $em->createQuery("SELECT m FROM WelcomeBundle:Produitimage m WHERE m.color='$c' AND m.idproduit='$id'");
$pimg = $query5->getResult();
$pimg1 = $pimg[0];
return $this->container->get('templating')->renderResponse('TMClientBundle:Client:changecolor.html.twig', array(
'product' => $produit,
'sizes' => $sizes,
'colors' => $colors,
'boutique' => $boutique,
'pimg' => $pimg1
));
} else {
return $this->productPageAction($id);
}
}
此图像描述了该问题:
检查代码后,图像在那里,但不显示!
答案 0 :(得分:0)
似乎是dom / javascript问题。
#resultats参考什么?
您的ajax结果包含哪些内容?
也许你应该尝试创建/替换img标签:
var img = document.createElement("img");
img.src = "images/"+your_image;
document.getElementById('resultats').appendChild(img);
要删除以前的附加信息,或者只是使用:
document.getElementById("your_image_el_id").src="your/image_path.jpg";