如何使用Java Play Framework 2.0.3和easyXDM获取PUT请求数据

时间:2012-10-02 18:37:26

标签: java playframework playframework-2.0

我正在尝试使用easyXDM从Web应用程序调用我自己的Web服务(Java Play 2.0.3)

这是我在客户端(网站)的代码:

  var formValues = {
           email: $('#editUserEmail').val(),
           first_name: $('#editUserFirstName').val(),
           last_name: $('#editUserLastName').val()
  };

  this.xhr.request({
           url: "http://restserver.dev:9000/users/" + this.model.get('id'),
           method: "PUT",
           data: formValues
        }, function(response){
           console.log(response.data);

           var jsonResponse = JSON.parse(response.data);

           if (jsonResponse.status == 'success'){
              alert("saved successfully");
           }

        });

以下是服务器代码(Java):

  final Map<String, String[]> values = request().body()
    .asFormUrlEncoded();

    // validating
    if (values.containsKey("first_name"))
        db_user.first_name  = values.get("first_name")[0];
    if (values.containsKey("last_name"))
        db_user.last_name = values.get("last_name")[0];
    if (values.containsKey("email"))
        db_user.email = values.get("email")[0];

它适用于POST方法,但每当我尝试使用PUT方法时,服务器无法获取PUT请求正文数据(值为null)。我使用相同的代码将其更改为POST,它工作正常。 我在客户端或服务器端做错了吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

据我所知,并非所有浏览器都支持Ajax请求的 PUT 。这可能是您在这里遇到问题的原因。对于跨浏览器兼容性,您应该坚持使用Gax / POST进行Ajax调用。