2011-05-03 123 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; 
});