2011-05-03 125 views
0

我已經將一個onlcick事件附加到窗體的提交按鈕來覆蓋默認的POST請求,但是我在使其工作時遇到了一些麻煩。Javascript/JQuery POST「url」undefined(undefined)

我想要的是將物品點擊添加到購物車,但只顯示模式確認,不刷新頁面。

這段代碼是在我的靜態例子中工作的,但是自從集成它之後我做了一些事情使它突破了。

function cartSubmit(addbtn) 
{ 
var form = addbtn.parentNode.parentNode.parentNode; 
var formData = jQuery(form).serializeArray(); 
jQuery.post("/myurl/", formData, function(r){ 
jQuery.colorbox({html:'<div style="padding:10px;"><h2>Product added to cart.</h2></div>'});   
}); 
return false; 
} 

現在我在控制檯得到一個錯誤說POST「HTTP://本地主機/ myurl /」未定義(未定義),那麼正常的形式提交(刷新頁面),但似乎也與JavaScript的,因爲提交它將物品添加到購物車兩次。

無論如何,任何幫助非常感謝!

+0

如果你關閉Firebug,這是否做任何事情? – Eli 2011-05-03 17:11:11

+0

一個類似的(不完全重複的)問題被問及在這裏回答:http://stackoverflow.com/questions/3303874/jquery-form-not-submitting-with-id-submit-but-will-submit-with-a -submi/3303917#3303917 – NateDSaint 2011-05-03 19:05:02

回答

2

您可以嘗試通過提交事件將該函數綁定到表單,例如,假設您的表單具有myform的id,將以下內容添加到您的文檔中,並且您不再需要提交按鈕的onclick屬性:

<html> 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js" type="text/javascript"></script> 
    </head> 
    <body> 
    <form id="someform-123" method="post"> 
     <input type="text" id="field1" /> 
     <input type="submit" class="add_to_cart" value="Add" /> 
    </form> 
    <hr> 
    <form id="someform-789" method="post"> 
     <input type="text" id="field2" /> 
     <input type="submit" class="add_to_cart" value="Add" /> 
    </form> 

    <script type="text/javascript"> 
     $('.add_to_cart').closest('form').submit(function(e) { 
     e.preventDefault(); 
     alert('form id: ' + $(this).closest('form').attr('id')); 
     }); 
    </script> 
    </body> 
</html> 
+0

您需要在代碼示例的第6行的末尾添加})。我會爲你編輯它,但我沒有足夠的代表。 – NateDSaint 2011-05-03 19:06:35

+0

謝謝,補充。他們在我的複製/粘貼中迷路了。 – ryanmarc 2011-05-03 19:19:59

+0

@ryanmarc好交易,現在要贏。 – NateDSaint 2011-05-03 19:26:12

0

我有同樣的問題,一箇中止的AJAX請求。我在我的按鈕上使用了返回false來修復它。 如果您有(例如):

<form method="post" action=""> 
Name: <input type="text" name="whatever" id="whatever" /> 
<input type="submit" id="join" value="Join" /> 
</form> 

而且

$("#join").click(function(){ 
    $.ajax({ 
    url: 'whatever.php', 
    type: 'POST', 
    data: 'name=' + $("#join").val(), 
    success: function(r){ alert(r); } 
    }); 
}); 

這將對whatever.php爲了解決這個問題,取消提交表單的中止,添加按鈕返回:

$("#join").click(function(){ 
    $.ajax({ 
    url: 'whatever.php', 
    type: 'POST', 
    data: 'name=' + $("#join").val(), 
    success: function(r){ alert(r); } 
    }); 
    return false; 
});