AJAX表单提交问题

时间:2019-05-11 03:40:30

标签: javascript jquery ajax

要求通过ajax调用提交表单,您将拦截结果并更新页面。您永远不会离开索引页面。

我无法正常使用ajax调用

        <form action="/cart" method="post" id="addProduct">
            Quantity: <input type="number" name="quantity">
            <button type="submit">Add to Cart</button>
            <input type="hidden" name="productid" value="{{id}}">
            <input type="hidden" name="update" value="0">
        </form>





         var form = $('#addProduct');
            form.submit(function(e){
               e.preventDefault();
                 $.ajax({
                     type: "POST",
                     url: "/cart",
                     data: form,
                     dataType: "json",
                 success: function(e) {
                     window.location.href = "/";
               }
            });
         })

4 个答案:

答案 0 :(得分:1)

您可以使用

JavaScript

gather

form-serialize(https://code.google.com/archive/p/form-serialize/

 df %>%
    gather(key = "variable", value = "value", -id, -category) %>%
    group_by(category, variable) %>%
   summarise(mean = mean(value))
# A tibble: 4 x 3
# Groups:   category [2]
#  category variable     mean
#  <fct>    <chr>       <dbl>
#1 bad      X1        0.228  
#2 bad      X2       -0.438  
#3 good     X1       -0.00465
#4 good     X2        0.355  

jQuery

set.seed(24)
df = data.frame(matrix(rnorm(10), nrow=5)) 
category <- rep(c("good", "bad"), c(2, 3))
id <- c(1, 2, 3, 4, 5)
df <- cbind(id, df, category)

答案 1 :(得分:1)

您的Ajax调用未将数据发送到服务器。使用formdata对象或serialize()获取表单输入值,然后将其发送到服务器。

使用

var form = new FormData($('#addProduct')[0]); 

OR

var form =  $("'#addProduct").serialize(); 

代替

var form = $('#addProduct');

成功后,从服务器发送响应并更新成功功能中的DOM。不要使用window.location.href =“ /”;

答案 2 :(得分:0)

您正在更改ajax调用的全部含义。 Ajax调用用于更新某些内容而无需刷新页面。对于成功的案例,您正在更改不正确的URL。从您的代码中删除window.location.href = "/";,然后尝试添加消息或提醒类似alert('Product is added to cart');

的消息

答案 3 :(得分:0)

要在成功后更新文档,可以使用append(e)更新DOM

<form  method="post" id="addProduct">
            Quantity: <input type="number" name="quantity">
            <button type="submit">Add to Cart</button>
            <input type="hidden" name="productid" value="2">
            <input type="hidden" name="update" value="0">
        </form>

    <div id="display">

    </div>



    $(function(){

            $("#addProduct").submit(function(e){
                e.preventDefault();
           var quantity = $(this).children("input[name=quantity]").val();
           var productid = $(this).children("input[name=productid]").val();
           var update = $(this).children("input[name=update]").val();
               $.ajax({
                  type:"post",
                  url:"/cart.php",
                  data:{update:update,quantity:quantity,productid:productid},
                  success: function(feedback){
                      $("#display").html(feedback);
                  },
                  error: function(err){
                    alert("error");
                  }
               });

            });
    });

我更新答案,并使用带有id显示的div来显示我从ajax成功返回的数据