Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在servlet中获取JSON字符串_Javascript_Java_Jquery_Json_Servlets - Fatal编程技术网

Javascript 无法在servlet中获取JSON字符串

Javascript 无法在servlet中获取JSON字符串,javascript,java,jquery,json,servlets,Javascript,Java,Jquery,Json,Servlets,我试图通过JSON通过ajax调用将一些变量从JSP传递到servlet。但我在servlet端得到空值。请有人帮我找出我犯的错误/我错过了什么 //JSON var masterdata=新对象(); masterdata.grn=$('#grn').val(); masterdata.pono=$('#pono').val(); masterdata.podt=$('#podt').val(); //仅当error=0时调用servlet插入数据 如果(错误!=1){ $.ajax({ u

我试图通过JSON通过ajax调用将一些变量从JSP传递到servlet。但我在servlet端得到空值。请有人帮我找出我犯的错误/我错过了什么

//JSON
var masterdata=新对象();
masterdata.grn=$('#grn').val();
masterdata.pono=$('#pono').val();
masterdata.podt=$('#podt').val();
//仅当error=0时调用servlet插入数据
如果(错误!=1){
$.ajax({
url:'insertserv',
键入:“POST”,
数据类型:“json”,
数据:{test:JSON.stringify(masterdata)},
contentType:'应用程序/json',
mimeType:'application/json',
成功:功能(数据){
警报(“Hi”);
}			
});
}
否则{
警报(“无法保存。请检查输入的数据!”);
}

});如果后端使用
json
内容进行响应,则只有
数据类型:“json”
有效。尝试更改响应类型:

response.setContentType("application/json");  
因为您的ajax需要来自后端的json,其数据类型为
dataType:“json”,

反之亦然

将数据类型更改为text:
dataType:“text”,响应头显示
response.setContentType(“text/plain”)。但是在这种情况下,您必须使用
JSON.parse()
来解析JSON字符串

//JSON
var masterdata=新对象();
masterdata.grn=$('#grn').val();
masterdata.pono=$('#pono').val();
masterdata.podt=$('#podt').val();
//仅当error=0时调用servlet插入数据
如果(错误!=1){
$.ajax({
url:'insertserv',
键入:“POST”,

数据类型:'text',/用我的代码替换ajax代码

//JSON
var masterdata=新对象();
masterdata.grn=$('#grn').val();
masterdata.pono=$('#pono').val();
masterdata.podt=$('#podt').val();
//仅当error=0时调用servlet插入数据
如果(错误!=1){
$.ajax({
url:'insertserv',
键入:“POST”,
数据类型:“json”,
数据:JSON.stringify({“test”:masterdata}),
contentType:'应用程序/json',
mimeType:'application/json',
成功:功能(数据){
警报(“Hi”);
}			
});
}
否则{
警报(“无法保存。请检查输入的数据!”);
}

});
将响应更改为application/json。仍在获取null@Jsel我可以看出,您没有返回有效的json,而是将数据类型更改为文本。我已经按照代码段中提到的u进行了修改。但得到相同的null:(谢谢你给了我正确的路径。你能不能更清楚地告诉我如何获取所有变量从
wholedata
获取数据你可以像
JSONObject testdata=wholedata.getJSONObject(“test”);
那样获取特定的元素write
testdata.getString(“grn”)
这只是一个示例,您可以对所有三个变量(grn、pono、grn)执行此操作。我在JSONObject wholedata=new JSONObject(json)时出错;“构造函数JSONObject(字符串)未定义”。我已经导入了org.json.simple.*;toohey Jsel首先打印
字符串json
,如果它打印得好,那么我们确定我们的数据在servlet中,如果它不打印任何数据,那么我们必须优化代码。如果数据将打印,那么我们可以使用代码获取变量的数据。很好。非常感谢您的帮助!