null JSON in servlet
null JSON in servlet
我通过AJAX发送JSOn,它在servlet中为空
JAVASCRIPT创建JSON函数
function submitTheValues(event, id, price, count) {
var searchEleWithinDiv = document.getElementById("content").children;
var table = searchEleWithinDiv[1];
var qty = table.rows[count].cells[8].children[0].value;
var acNo = table.rows[count].cells[10].children[0].value;
var jsonStr = '{"reagentid": id, "account": acNo,"quantity":
qty, "reagentcount":count}';
var jsonObj = eval("(" + jsonStr + ")");
return jsonObj;
}
AJAX代码var xmlhttp = new XMLHttpRequest();
; if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if(xmlhttp.responseText !=null)
{
var searchEleWithinDiv = document.getElementById("content").children;
var table = searchEleWithinDiv[1];
var btn = table.rows[count].cells[11].children[0].value;
btn.value = "Added to Cart";
}
}
}
var url = "<%=request.getContextPath()%>/displaycartservlet";
var jsonObj = this.submitTheValues(event, id, price, count);
var jsonOb = JSON.stringify(jsonObj);
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type", "application/json");
xmlhttp.send(jsonOb);
}
如果我将最后两个语句也更改为以下内容,我将得到null错误
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencode");
xmlhttp.send('json='+encodeURIComponent(jsonOb));
<<p> SERVLET代码/strong> String jsonPar = request.getParameter("json");
使用getParameter
将无法从POST主体读取JSON,请参阅get POST data
要在参数中获得json,我想你只是忘记了mime类型末尾的d
。你有"application/x-www-form-urlencode"
:
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send('json='+encodeURIComponent(jsonOb));
另外,您可以使用eval
清理一些实际上不需要的代码。直接创建对象:
function submitTheValues(event, id, price, count) {
var searchEleWithinDiv = document.getElementById("content").children;
var table = searchEleWithinDiv[1];
var qty = table.rows[count].cells[8].children[0].value;
var acNo = table.rows[count].cells[10].children[0].value;
return {
reagentid: id,
account: acNo,
quanitity: qty,
reagentcount: count
};
}
,然后清理这里的名字:
var url = "<%=request.getContextPath()%>/displaycartservlet";
var obj = this.submitTheValues(event, id, price, count);
var jsonObj = JSON.stringify(obj);
检查XMLHttpRequest发送方法,您将看到如果希望使用x-www-form-urlencode,则需要边界参数。但是要发送一个简单的JSON字符串,您可以使用以下命令:
xmlhttp.setRequestHeader("Content-type", "application/json");
和应该工作(它在我的模块)。
如果你仍然想使用表单,超级简单的方法是:
<form id="myform">
<input name="text" type="text"/>
<select name="month">
<option name="ene">Enero</option>
<option name="feb">Febrero</option>
</select>
</form>
<script>
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(this.readyState == 4 && this.status == 200)
alert(this.responseText);
}
xhr.open("POST", "server.php");//i use php, but you can change to your servlet here
function send(){
xhr.send(new FormData(document.getElementById('myform')));
}
</script>
<button onclick="send()">Enviar</button>
其中键是使用FormData对象
相关文章:
- Node.js's Buffer.writeFloatBE in Javascript
- Setting default onclick behavior for <img> tag in gene
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 当值更改时,在servlet中自动获取textarea值,无需单击按钮
- Lucene Search in Alfresco
- servlet中的请求对象,而不是从jsp接收参数值
- JSON分析错误:Java中AJAX、Javascript和Servlet的意外EOF
- grep in JQuery to C#
- write HTML in JavaScript
- jQuery setTimeOut: in for-loop
- 在servlet中提交两个表单
- SetTimeout and clearTimeout in Javascript
- lightbox in html 5 and javascript
- 我们如何在互联网断开连接或用户关闭选项卡/浏览器时调用注销servlet
- 如何从servlet获取数据到ajax成功
- 使用Jquery$.ajax将json数据传递给servlet(doPost)
- HTMLInputElement in IE7
- Mongodb$in以与数组中相同的顺序获取结果
- window.confirm() in java servlet
- null JSON in servlet