通过ajax发布表单,并在play framework java中获取一个表单对象

我正在使用play framework 2.3.8 java并使用ajax提交表单,但是我无法从该请求中获取Form对象.我的问题解释如下.
我有一个模型
@Entity
public class Permission {


    @Id
    @Column(name = "id",nullable = false)
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String per1= "off";

    private String per2= "off";

    // getter setters
}

我的形式

<form id="form-permission">
    <!--Setting "on" and "of" value from js-->
     <input type="checkBox" id="per1" name="per1">
     <input type="checkBox" id="per2" name="per2">
     <input type="submit" >
  </form>

 $('#form-permission').on('submit',function(){

       var uid=// id to update

       myJsRoutes.controllers.MyController.updatePer(uid).ajax({

           data : $("#form-permission").serialize(),success : function(data) {

               console.log(data);


     });

     return false;
 });

当提交没有ajax的表单时,播放将请求数据绑定到Model对象,我们可以获取Form对象

Form<Permission> permissionFormData = Form.form(Permission.class).bindFromRequest();

我们可以通过permissionFormData.get()获取对象,因为对于具有ajax和没有ajax的post表单的请求是一样的.在ajax的情况下,我做同样的事情,但是当我尝试让Entity成员给我一个No价值异常

Logger.info("---Permission one is "+permissionFormData.get().getPer1());

我在这里做错了什么?在使用ajax时,还有什么其他方法可以从播放表单中获取对象.我想在这里使用对象而不是JSON,因为最后我用JSON持久化对象我必须遍历所有的关键价值并创造一个对象.

编辑:当我尝试简单的ajax它给了我同样的例外

$("#form-permission").on('submit',function() {
   var $this = $(this);
   var uid=//some uid
   $.ajax({
     url: '/account/permission?id='+uid,data: $this.serialize(),type: 'POST'
   });
   return false;
});

我目前使用的方法是从ajax请求传递JSON,在我的控制器中,我使用Json.fromJson()从实体对象转换JSON,但我只想知道为什么AJAX请求的行为与正常格式提交不同,即为什么我当两个请求都是同一类型时,无法从请求中获取实体.

提前致谢.

Step 1: Rename all private properties to public and remove getter and setter methods.
e.g.

private String per1= "off"; to public String per1= "off";

Step 2. Ensure your route file is a GET request

Step 3. Try using basic Jquery ajax to test run.

$("#form-permission").on('submit',function() {
   var $this = $(this);
   $.ajax({
     url: '/url/to/controller',type: 'GET'
   });
   return false;
});

您可以随时从GET到POST,方便您,请确保您将JQuery和html表单方法更改为POST值,并将您的Playframework路由文件更改为POST.

希望这个工作!

相关文章

JS原生Ajax操作(XMLHttpRequest) GET请求 POST请求 兼容性问题 利用iframe模拟ajax 实现表单提交的返回...
AJAX 每日更新前端基础,如果觉得不错,点个star吧 &#128515; https://github.com/WindrunnerMax/E...
踩坑Axios提交form表单几种格式 前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSe...
很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈。 为了防止...
需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: &quot;./server/slider.js...
Ajax函数封装ajax.js // Get / Post // 参数 get post // 是否异步 // 如何处理响应数据 // URL // var...