2012-12-13 72 views
3

我試圖爲我的Magento商店之一運行以下jquery ajaxSubmit。我使用ajaxSubmit,因爲我也有2個文件要從表單上傳(也就是說我需要$_FILE中的數據)。但是當我執行ajaxSubmit時,它也會使用正常的表單提交,它會刷新頁面並將我帶到下一頁,而不是留在同一頁面上,其中有一個彈出框,其中包含更多內容。我有return false;以防止這種情況,但它失敗。 的提交代碼:jquery ajaxSubmit也提交了常規表格

$('#quickbuyform').submit(function(){ 

    // No Accessories: normal submit 
    if ($('#accessories ul li').size()==0) { 
     return true; 
    } 

    strName = "<?php echo $_product->getName() ?>"; 

    // loading message 
    $('#pop_accessories_area_message').html("We are adding '"+strName+"' into your shopping cart ..."); 
    // Pop with loading 
    popAccessories(); 

    // loading icon 
    //var dataString = $('#quickbuyform').serialize(); 
    $.ajaxSubmit({ 
      type: "POST", 
      url: $('#quickbuyform').attr('action'), 
      data: dataString, 
      beforeSubmit: showRequest, 
      success: function() { 
      // display cart link: 
      $('#pop_accessories_area_message').html(strName+" was added to <a href='<?php echo $this->getUrl('checkout/cart') ?>'>your shopping cart</a>."); 
      $('.pop_accessories_area_button').show(); 
      //window.location = '<?php //echo $this->getUrl('checkout/cart') ?>'; 
      } 
     }); 
    return false; 
}); 

因此,這是我現在有e.preventDefault(),但現在不提交任何東西。僅僅停留在('#quickbuyform').ajaxSubmit

$('#quickbuyform').submit(function (e){ 
    e.preventDefault(); 
    // No Accessories: normal submit 
    if ($('#accessories ul li').size()==0) { 
     return true; 
    } 

    strName = "<?php echo $_product->getName() ?>"; 

    // loading message 
    $('#pop_accessories_area_message').html("We are adding '"+strName+"' into your shopping cart ..."); 
    // Pop with loading 
    popAccessories(); 

    $('#quickbuyform').ajaxSubmit({ 
      type: "POST", 
      url: $('#quickbuyform').attr('action'), 
      data: dataString, 
      success: function() { 
      // display cart link: 
      $('#pop_accessories_area_message').html(strName+" was added to <a href='<?php echo $this->getUrl('checkout/cart') ?>'>your shopping cart</a>."); 
      $('.pop_accessories_area_button').show(); 
      //window.location = '<?php echo $this->getUrl('checkout/cart') ?>'; 
      } 
     }); 
    return false; 
}); 
+0

如果表單的action屬性中包含正確的url,則不需要指定url選項,默認情況下,ajaxSubmit將使用此選項。 –

回答

3

您可以停止正常的形式,通過調用事件對象的preventDefault方法提交。

$('#quickbuyform').submit(function (e) { 
    e.preventDefault(); 
    ... 
}); 
+0

我試過e.preventDefault();但是我把它停在函數頂部的語句停止提交表單,如果我把它放在返回false之前;它會執行正常的提交。任何想法在哪裏把這個聲明.. ?? – Thanu

+0

你應該在頂部添加它。 ajaxSubmit方法仍應像往常一樣提交表單。 – Stanley

+0

是的,我在頂部,但之後,ajaxSubmit沒有被調用,如果我刪除它,ajaxSubmit將調用,但作爲一個正常提交:( – Thanu

0

嘗試使用$就代替,或e.preventDefault();如上建議:

$.ajax({ 
      type: "POST", 
      url: $('#quickbuyform').attr('action'), 
      data: dataString, 
      beforeSubmit: showRequest, 
      success: function() { 
      // display cart link: 
      $('#pop_accessories_area_message').html(strName+" was added to <a href='<?php echo $this->getUrl('checkout/cart') ?>'>your shopping cart</a>."); 
      $('.pop_accessories_area_button').show(); 
      //window.location = '<?php //echo $this->getUrl('checkout/cart') ?>'; 
      } 
}); 
+0

$ .ajax不會將文件發佈到$ _FILE數組中...所以$ ajax不在我估計 – Thanu

0

你應該嘗試這樣的事情 -

$("#quickbuyform").submit(function(e){ 
    e.preventDefault(); 
    });​ 

這將防止您的jQuery的默認行爲事件。