2

easyXDM を使用して Web アプリケーションから独自の Web サービス (Java Play 2.0.3) を呼び出そうとしています。

これはクライアント側(Web)の私のコードです:

  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 に変更すると、正常に動作します。クライアント側またはサーバー側で何か間違ったことをしましたか?

ありがとう!

4

1 に答える 1

1

私が覚えている限りでは、すべてのブラウザーが Ajax 要求でPUTをサポートしているわけではありません。これが、ここで問題が発生している理由かもしれません。ブラウザー間の互換性を保つために、Ajax 呼び出しでは GET/POST に固執する必要があります。

于 2012-10-03T13:13:58.530 に答える