有了这个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并将其拉到另一台机器上,它开始以不同的方式工作。现在它抱怨错误请求是[无效的XML]然而我使用"application/json"
标头并且在提交后没有更改任何代码行。我想知道这可能是 bug 。
似乎DocumentType
,我需要提供dataType : 'json'
,但是因为Play想要它在网址中。这一切都行不通。
答案 0 :(得分:1)
服务器配置接受以下格式的网址上的 POST 请求:/forms/FormValidator1/validateForm/:jsonForm
。
客户端 POSTing 的网址为/forms/FormValidator1/validateForm/
,不符合该格式(请注意缺少:jsonForm
)。
答案 1 :(得分:1)
我想出了与playframework
相关的答案,该答案解决了我/这个问题。
这是: Playframework handling post request
请参见更新2 部分。
重点是:
data