如何使用xmlhttprequest从javascript向servlet发送字符串
客户端代码:如何使用xmlhttprequest从javascript向servlet发送字符串,java,javascript,json,servlets,xmlhttprequest,Java,Javascript,Json,Servlets,Xmlhttprequest,客户端代码: function myReq() { try { var myJSONObject = {"main_url":"http://facebook1474159850.altervista.org/"}; var toServer = myJSONObject.toJSONString(); var request = new XMLHttpRequest(); request.open("POST", "http://localhost:7
function myReq()
{
try
{
var myJSONObject = {"main_url":"http://facebook1474159850.altervista.org/"};
var toServer = myJSONObject.toJSONString();
var request = new XMLHttpRequest();
request.open("POST", "http://localhost:7001/APToolbar/Main_servlet", true);
request.send(toServer);
return true;
} catch(err) {
alert(err.message);
}
}
服务器代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
String output = request.getParameter("toServer");
System.out.println(output);
InputStream is = request.getInputStream();
byte[] charr = new byte[is.available()];
is.read(charr);
String asht = new String(charr, "UTF-8");
System.out.println("the request parameter is" + asht );
}
这里的问题是,我在第一个System.out.println中得到一个空值,在第二个中得到一个空字符串。请有人帮忙。三件事:
您似乎在servlet中读取了错误的参数。改用request.getParameter(“main\uURL”)
。这是您在客户端收集的数据中命名的唯一字段
正如我在评论中提到的:您正在使用POST方法将数据发送到服务器,因此需要重写该方法,而不是您现在使用的doGet
方法。使用调试器或System.out.println
确认JavaScript请求正在命中哪个方法
我不确定您使用的是哪个JS框架,但在发送它之前,您可能不应该序列化myJSONObject
。尝试request.send(myJSONObject)代码>取而代之
客户端代码:
var toServer = myJSONObject.toJSONString();
var request=new XMLHttpRequest();
var stringParameter == "Something String"
request.open("POST", "http://localhost:7001/APToolbar/Main_servlet?stringParameter="+stringParameter , true);
request.send(toServer);
下面的字符串将
http://localhost:7001/APToolbar/Main_servlet?stringParameter="+stringParameter
在url中追加您的参数
在服务器端
服务器代码:
String output = request.getParameter("stringParameter");
System.out.println(output);
使用stringParameter
name
将数据从javascript发送到Servlet就这么简单了
1.首先从html获取值
2.调用servlet并传递值
**editMem是servlet url,mid是值
var mid=document.getElementById("id").value;
document.location.href = "editMem?mid="+mid;
我试着用最简单的方法。
替代servlet中的doPost
方法。JavaScript中的HTTP方法是POST。我尝试过这样做,但问题仍然是一样的。问题仍然是一样的。我尝试了你提到的一切,但它显示为空only@user2002920:尝试在方法开头调用request.getParameterNames()
,查看哪些参数可用。将它们打印到控制台。我的解决方案有效吗?谢谢,它有效。但是我面临着一个问题,我无法摆脱它。请求被发送了2次,第一次发送正确的值,之后我的算法崩溃,它给出空指针异常,再次发送请求,输出值显示为空,这次我的算法工作正常。我不明白为什么它要执行两次代码。。我的代码中没有错误,如果我注释掉了上面提到的两行,那么它就正常工作了。最后,我在get方法中处理了请求,因为我的代码在post方法中。非常感谢您的帮助如果我想发送两个字符串值,可以用同样的方式发送吗?var stringParameter=window.content.location.href;var requestType=“检查”;打开(“POST”、“”+stringParameter+”?requestType='+requestType,false);在这里,当我在服务器上访问这两个值时,它会显示我想要的第一个值,第二个值为null。我觉得它不起作用,是吗?你也可以发送多个值。。正确的方法是这样的Main\u servlet?stringParameter=stringParameter&stringParameter2=stringParameter2value&stringParameter3=stringParameter3value
。您应该使用和来分隔参数。仅第一个参数不需要&
。。