jQuery Ajax POST有null主体

时间:2014-12-13 00:30:08

标签: jquery ajax json playframework

所以我正在使用play框架并尝试进行Ajax POST调用以向我的动作提交product_id和数量的JSON,并将其添加到当前用户购物车中。我已经尝试了很多不同的东西,每次我的JSON数据在控制器中为空。我真的被困住了,无法弄明白为什么。

我想提交表单的HTML是:

@(产品:产品)

<li data-task-id="@product.id">
    <img src="@product.imageUrl" alt="No Image Available">

    <h2>@product.name</h2>

    <!-- Price Display -->
    @if(product.price != 0.0){
        <span class="product-price">@product.price</span>
        <form name="ajaxform" id="ajaxform" action="@routes.Item.addToCart()" method="POST">
            <input type="text" name="id" value="@product.id" hidden="true"/> <br/>
            <input type="text" name="qty" value ="1" /> <br/>
            <input type="submit" name="submit"/>
        </form>

    }
    @if(product.price == 0.0){
        <span class="available-in-store">Only Available in Store</span>
    }
</li>

这是我的javascript:

$("#ajaxform").submit(function(e)
{
    var postData = $(this).serializeArray();
    var formURL = $(this).attr("action");
    $.ajax(
    {
        url : formURL,
        type: 'POST',
        dataType : 'json',
        contentType:'application/json',
        data : {postData: JSON.stringify(postData)},
        success:function(data, textStatus, jqXHR)
        {

        },
        error: function(jqXHR, textStatus, errorThrown)
        {

        }
    });
    //e.preventDefault();   //STOP default action
});

$("#ajaxform").submit(); //SUBMIT FORM

是的,我尝试过制作数据:postData而不是使用stringify。它有相同的结果。

以下是我的控制器中处理请求的操作:

public static Result addToCart(){
        JsonNode jsonNode = request().body().asJson();

        if(jsonNode == null){
            return badRequest("Expecting JSON data");
        }
        //Customer currCustomer = Customer.find.where().eq("email", session().get("email")).findUnique();
        //System.out.println(cartItemForm.data().get("productId"));
        //Product product = Product.find.byId(productId);
        //ShoppingCart cart = new ShoppingCart(currCustomer, product, quantity);
        //cart.save();
        //currCustomer.shoppingCartList.add(cart);
        return ok("Item Added to Cart");
    }

0 个答案:

没有答案