问题描述
我有服务器,我应该在按下按钮时发出请求,我也必须调用此方法,当它起作用时,我应该解析json,但是我看不到控制器方法,只有主要方法可用
怎么打
<input type="submit" onclick="@routes.Login.resp()" value="LOGIN" >
因为它不担心无法解析符号
GET /login controllers.Login.main()
我的控制器:
package controllers;
import play.libs.F;
import play.libs.WS;
import play.mvc.Controller;
import play.mvc.Result;
public class Login extends Controller {
public static Result main() {
return ok(views.html.login.render());
}
public static F.Promise<Result> resp() {
String feedUrl="http://validate.jsontest.com/?json=%7B%22key%22:%22value%22%7D";
final F.Promise<Result> resultPromise = WS.url(feedUrl).get().flatMap(
new F.Function<WS.Response, F.Promise<Result>>() {
public F.Promise<Result> apply(WS.Response response) {
return WS.url(response.asJson().findPath("empty").asText()).get().map(
new F.Function<WS.Response, Result>() {
public Result apply(WS.Response response) {
return ok("size" + response.asJson().findPath("count").asInt());
}
}
);
}
}
);
return resultPromise;
}
}
视图:
<!--
Author: W3layouts
Author URL: http://w3layouts.com
License: Creative Commons Attribution 3.0 Unported
License URL: http://creativecommons.org/licenses/by/3.0/
-->
<!DOCTYPE html>
<html>
<head>
<title>LOGIN</title>
<meta charset="utf-8">
<link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/stylelogin.css")">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script type="application/x-javascript"> addEventListener("load", function() { setTimeout(hideURLbar, 0); }, false); function hideURLbar(){ window.scrollTo(0,1); } </script>
<!--webfonts-->
<link href='http://fonts.googleapis.com/css?family=Open+Sans:600italic,400,300,600,700' rel='stylesheet' type='text/css'>
<!--//webfonts-->
</head>
<body>
<!-----start-main---->
<div class="main">
<div class="login-form">
<h1>Member Login</h1>
<div class="head">
<img src="@routes.Assets.at("images/user.png")" alt=""/>
</div>
<form>
<input type="text" class="text" value="USERNAME" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'USERNAME';}" >
<input type="password" value="Password" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Password';}">
<div class="submit">
<input type="submit" onclick="@routes.Login.main()" value="LOGIN" >
</div>
</form>
</div>
<!--//End-login-form-->
<!-----start-copyright---->
<!-----//end-copyright---->
</div>
<!-----//end-main---->
</body>
</html>
我不确定我是否也正确解析json,如何进行正确的GET,POST请求并解析它
1楼
据我所知,使用onclick属性,您始终会在JavaScript中调用一个函数。
如果要指定URL,则需要使用诸如<form action="@routes.Login.main()">
类的action属性将其放入表单标签中。
HTML表单标签的默认设置是发送 。
如果要发送POST,则必须通过其他method="post"
来指定它,例如<form action="@routes.Login.main()" method="post">
。
但是然后您也必须更改路由: POST /login controllers.Login.main()
。
如果您要发布登录数据,我强烈建议您使用POST,因为使用GET,您的数据(包括密码)会出现在URL的查询字符串中。
另外,您的@routes.Login.main()
方法仅返回登录视图return ok(views.html.login.render());
。
相反,它应该评估您发送的表单数据。