ikarus, может оно и правильно с точки зрения минимального вмешательства обращаться через onSuccess с указанием product_id, но с точки зрения возможности расширения функционала феншуйнее повесить
$(селектор_кнопки_купить).bind('click', function() {
var product_id = $(this).attr('product_id');
// сценарий добавления в корзину и всего прочего
});
Это не панацея, а просто мое сугубо личное мнение.
UPD: очевидное преимущество такого решения в том, что Вы будете обращаться к картинке через $(this). В Вашем решении может возникнуть ситуация, когда на одной странице будет 2 товара с одинаковым id, что приведет к ошибке JS-сценария.
UPD2:
Кстати, обратите внимание, что Вы указываете в качестве id число. Такое делать категорически нельзя. Надо как минимум делать
id="product_id_<?php echo $product['product_id']; ?>"
и селектор
<img src="product_id_'+ $(imagePid).attr('src') +'">
или даже лучше лучше использовать атрибут
data-id="<?php echo $product['product_id']; ?>"
и слектор через атрибут
<img src="'+ $('img[data-id="'+imagePid+']'"').attr('src') +'">
P.S. Может даже лучше не bind, a on на случай если где-то используется ajax-подгрузка товаров.
P.P.S. Код написан на коленке - могут содержаться ошибки.