0

このGETリクエストがあると、機能します(リクエストをサーバーに送信し、サーバーはそれを処理できます):

    /* post to server*/
    $http.get("/forms/FormValidator1/validateForm/" + JSON.stringify(data)).
        success(function(data) {
            console.log("good")
        }).
        error(function(data, status, headers, config) {
            console.log("something wrong")
        })

この POST リクエストを使用すると、そうではありません。

 $http.post("/forms/FormValidator1/validateForm/" + JSON.stringify(data)).
                success(function(data) {
                    console.log("good")
                }).
                error(function(data, status, headers, config) {
                    console.log("something wrong")
                })

または別の形式で書く:

           $http({
                url: '/forms/FormValidator1/validateForm',
                method: "POST",
                data: JSON.stringify(data),
                headers: {'Content-Type': 'application/json'}
            }).success(function (data, status, headers, config) {
                    console.log("good")
            }).error(function (data, status, headers, config) {
                    console.log("something wrong")
            });

私が最後に持っているものは次のとおりです。

Request URL:http://localhost:9000/forms/FormValidator1/validateForm
Request Method:POST
Status Code:404 Not Found

要求されたペイロードは json です:{"name":"name1","surname":"surname1"}

サーバー (playframework) で、クライアント呼び出しを受け入れることになっているルートを定義しました。

GET        /forms/FormValidator1/validateForm/:jsonForm           controllers.FormValidator1.validateForm(jsonForm:String)

POST        /forms/FormValidator1/validateForm/:jsonForm            controllers.FormValidator1.validateForm(jsonForm:String)

またはなし":jsonForm"

 POST        /forms/FormValidator1/validateForm            controllers.FormValidator1.validateForm(jsonForm:String)

その理由は何でしょう。私が逃したものは何ですか?

アップデート

興味深いことに、ラップトップで動作するようになった後 (以下の回答を参照)、gitHub にプッシュして別のマシンにプルすると、動作が異なります。Bad Request is [Invalid XML]と不平を言うようになりまし"application/json"たが、ヘッダーを使用し、コミット後にコード行を変更しませんでした。バグなのかな。

に沿っているようです。DocumentType提供する必要がありますdataType : 'json'が、Play はそれを URL に含める必要があるためです。これはすべて機能しません。

4

2 に答える 2

1

サーバー構成は、次の形式の URL でPOST/forms/FormValidator1/validateForm/:jsonForm要求を受け入れます。

クライアントがPOSTしている URL は/forms/FormValidator1/validateForm/で、これはそのフォームに適合しません (欠落している に注意してください:jsonForm)。

于 2013-11-12T20:31:24.837 に答える
1

に関連する回答を思いつきましたplayframework。これにより、私/この問題が修正されます。

ここにあります: ポストリクエストを処理する Playframework

そこのUPDATE 2セクションを参照してください。

ポイントは:

  1. Angualar 側: URL の作成中に params を使用する必要はまったくありません。との一般的なアプローチdata
  2. サーバー側では、Play のbodyParserを使用して、リクエストの本文として渡されたデータを抽出します。
于 2013-11-13T02:52:42.987 に答える