Javascript/JQuery POST "url"未定义(定义)

Javascript/JQuery POST "url" undefined (undefined)

本文关键字:quot 定义 未定义 url JQuery Javascript POST      更新时间:2023-09-26

我已经将onclick事件附加到表单的提交按钮以覆盖默认的POST请求,但是我在使其工作时遇到了一些麻烦。

我想要的是点击要添加到购物车的项目,但只显示模态确认而不刷新页面。

这段代码在我的静态示例中工作,但是自从集成它以来我所做的一些事情使它中断了。

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://localhost/myurl/"未定义(未定义),然后表单提交正常(刷新页面),但似乎也与javascript提交,因为它将项目添加到购物车两次。

无论如何,任何帮助都是非常感谢的!

您可以尝试通过提交事件将该函数绑定到表单,例如,假设您的表单的id为myform,将以下内容添加到文档中,并且您不再需要提交按钮的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>

我遇到了同样的问题,一个中止的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); }
  });
});
为了解决这个问题,取消表单的提交,在按钮上添加一个返回:
$("#join").click(function(){
  $.ajax({
    url: 'whatever.php',
    type: 'POST',
    data: 'name=' + $("#join").val(),
    success: function(r){ alert(r); }
  });
  return false;
});