0
私はmagentoサイトで作業しています。そこには、ajaxを使用してカートに商品をロードできるセクションがあります。これは正常に動作しますが、一度に1つの要求だけを処理できます。データベースに投稿している間は、別の製品を選択することはできません。そうしないと、その最初のリクエストが削除されます。私の質問は、他のものを取り消さずに複数のリクエストを同時に実行させる方法(または可能でしょうか)です。複数のajaxリクエストが非同期で実行されています
public function addAjaxAction()
{
$response = array();
$error = false;
$cart = $this->_getCart();
$params = $this->getRequest()->getParams();
if (isset($params['simple_sku']) && $params['simple_sku'] != '')
$product = Mage::getModel('catalog/product')->load(Mage::getSingleton('catalog/product')->getIdBySku($params['simple_sku']));
else
$product = $this->_initProductInStock();
$related = $this->getRequest()->getParam('related_product');
if (!$product) {
$error = 'Can not add item to shopping cart';
}else{
try {
$cart->addProduct($product, $params);
if (!empty($related)) {
$cart->addProductsByIds(explode(',', $related));
}
$cart->save();
$this->_getSession()->setCartWasUpdated(true);
Mage::dispatchEvent('checkout_cart_add_product_complete', array('product'=>$product, 'request'=>$this->getRequest()));
$response['status'] = 'success';
$response['cart'] = $this->getLayout()->createBlock('checkout/cart_minicart')
->setTemplate('page/html/modals/added_to_bag.phtml')
->setChild(
'breads' ,$this->getLayout()->createBlock('modcheckout/cart_breadcrumbs')->setTemplate('page/html/modals/mini_crumb.phtml')
)
->toHtml();
$response['cartStatus'] = $this->getLayout()->createBlock('core/template')->setTemplate('checkout/cart/status.phtml')->toHtml();
$response['checkoutNow'] = $this->getLayout()->createBlock('core/template')->setTemplate('checkout/cart/checkoutnow.phtml')->toHtml();
}
catch (Exception $e) {
$error = 'Can not add item to shopping cart';
}
}
if($error){
$response['status'] = 'error';
$response['message'] = $error; /*= $this->getLayout()->createBlock('modcore/messages')
->addMessage(new Mage_Core_Model_Message_Error($error))
->getGroupedHtml();*/
}
echo Zend_Json::encode($response);
}
と応答を処理しJS:POSTを扱うアクションがある
function addQuickviewAjax() {
if(productForm.validate()){
if(Product<?php echo $_product->getId() ?>.validate()) {
var params = 'product='+Product<?php echo $_product->getId() ?>.productId+'&qty='+Product<?php echo $_product->getId() ?>.currentQty+'&super_attribute[76]='+Product<?php echo $_product->getId() ?>.currentColor+'&super_attribute[491]='+Product<?php echo $_product->getId() ?>.currentSize;
new Ajax.Request('/modcheckout/cart/addAjax', {
parameters: params,
onFailure: reportError,
onSuccess: function(transport) {
var json = transport.responseText.evalJSON();
if(json.status == 'error'){
alert (json.message);
} else if(json.status == 'success') {
alert ('success');
}
}
});
} else {
return false;
}
}
return false;
}
は、誰も私にこのすべてのビットを啓発し、私は複数持っている可能性がどのように/場合を教えてもらえますそのアクションを使ったPOST?
リンクのおかげでありがたいですが、廃止されたメソッドである.live()を使用するようアドバイスしましたが、このプロジェクトのjqueryの贅沢はありません。 。 – Zac