2017-03-07 128 views
-1

我想从jsp以json的形式向servlet发送名称和密码,但这不起作用。 什么可能是问题?将json对象从jsp发送到servlet

这是我的小片段。

function submitForm(thisObj, thisEvent) { 
 
    var name = $('#name').val(); 
 
    var password = $('#password').val(); 
 

 
    var myData = { 
 
    "mydata": { 
 
     "name": name, 
 
     "password": password 
 
    } 
 
    }; 
 
    $.ajax({ 
 
    type: "GET", 
 
    url: "/Aasd", 
 
    data: { 
 
     jsonData: JSON.stringify(myData) 
 
    }, 
 
    dataType: "json" 
 
    }); 
 
    return false; 
 
}
<script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js”> 
 
</script> 
 

 

 
<body> 
 
    <h2>Login</h2> 
 
    <form enctype='application/json'> 
 
    Name:<input type="text" value="name" id="name"><br> Password: 
 
    <input type="password" id="password"><br> 
 
    <input type="submit" name="submit" onclick=" return submitForm(this,event)"> 
 
    </form> 
 
</body>

+0

脚本标记错了,也是你的输入类型=“提交”,你在点击使用,但我们提交,点击将被忽略,并会尝试发送您的表单,但您的表单不会采取行动,方法...审查一些例子,使其工作 – cralfaro

回答

0

的问题是您使用GET方法。您需要使用POST将数据“发布”到服务器。

POST由发送数据,得到的是由检索数据

GET请求应当仅用于检索数据

https://www.w3schools.com/tags/ref_httpmethods.asp

而且通过GET参数发送数据是就安全性而言,这是一个糟糕的做法(特别是使用ajax登录时,这种做法已经不是很安全)。

$.ajax({ 
    type:"POST", 
    url:"/Aasd", 
    data: myData, 
    dataType:"json" 
}); 

在您的servlet中,您将能够在doPost()方法中检索请求。

https://stackoverflow.com/a/2349741/5758328

0

校正从GET到POST请求类型。

$阿贾克斯({ 类型:“POST”

在servlet的一侧,从doPost()方法,你可以调用doGet()方法来使用,你可能不亦乐乎writtent为GET类型相同的实现打电话。

-2
$.ajax({ 
      type:"GET", 
      url:"/Aasd", 
      data:{jsonData:JSON.stringify(myData)}, 
      dataType:"json" 
     }); 
     return false; 

更改为

$.ajax({ 
      type:"POST", 
      url:"/Aasd", 
      data:{jsonData:JSON.stringify(myData)}, 
      dataType:"json" 
     }); 
     return false; 
+0

protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException { \t \t response.setContentType(“text/json”); \t \t PrintWriter out = response.getWriter(); \t \t \t \t尝试{ \t \t \t字符串ACTION =用request.getParameter( “动作”); \t \t \t String json = request.getParameter(“json”); \t \t \t \t \t \t的JSONObject jsonData =(的JSONObject)JSONValue.parse(JSON); \t \t \t String name =(String)jsonData。获得( “名称”); \t \t \t String password =(String)jsonData.get(“password”); \t \t \t \t \t \t System.out.println(name + password); \t \t} \t} –

+0

这是我的servlet,是否需要将doGet方法更改为doPost? –

+0

我更改为POST,但没有回应 –