Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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中获取数组时获取null_Javascript_Java_Jquery_Servlets - Fatal编程技术网

Javascript 尝试在servlet中获取数组时获取null

Javascript 尝试在servlet中获取数组时获取null,javascript,java,jquery,servlets,Javascript,Java,Jquery,Servlets,下面是一组代码,用于获取数组中的表数据,并通过ajax调用将其传递给servlet。但是我正在变空。由于我不熟悉这个servlet和web应用程序,请有人帮助我了解我的错误/如何获取所需数据。到目前为止,我尝试了So中给出的一些示例。但我无法获得预期的数据 var myTableArray = []; $("table#itemtable tr").each(function() { var arrayOfThisRow = [];

下面是一组代码,用于获取数组中的表数据,并通过ajax调用将其传递给servlet。但是我正在变空。由于我不熟悉这个servlet和web应用程序,请有人帮助我了解我的错误/如何获取所需数据。到目前为止,我尝试了So中给出的一些示例。但我无法获得预期的数据

 var myTableArray = [];
        $("table#itemtable tr").each(function() { 
            var arrayOfThisRow = [];
            var tableData = $(this).find('td');
            if (tableData.length > 0) {
                tableData.each(function() { arrayOfThisRow.push($(this).text()); });
                myTableArray.push(arrayOfThisRow);
            }
        });

        alert(myTableArray); 
        $.ajax({
            url:"insertmasteritem",
            type:"POST",
            dataType:'json',
            data: {json:myTableArray},
            success:function(data){
                // codes....
           },
       });
Servlet代码

String[] myJsonData = request.getParameterValues("json[]");
System.out.println("myJsonData.length"+myJsonData.length);

    for (int i = 0; i < myJsonData.length; i++) {

           String[] innerArray=myJsonData[i].split(",");  
           System.out.println(myJsonData[i]);
       }
String[]myJsonData=request.getParameterValues(“json[]”);
System.out.println(“myJsonData.length”+myJsonData.length);
for(int i=0;i
为什么将参数值作为JSON[]

String[] myJsonData = request.getParameterValues("json[]");

像这样发送Json数据

   $.ajax({
            url:"insertmasteritem",
            type:"POST",
            dataType:'json',
            data:myTableArray,
            success:function(data){
                // codes....
           },
   });
在Servlet类中

JSONObject jsonObj= new JSONObject(request.getParameter("myTableArray"));
Iterator it = jsonObj.keys(); 

while(it.hasNext())
{
  String jsonKey = (String)it.next();
  String jsonValue = jsonObj.getString(jsonKey);
  System.out.println(jsonKey  + " --> " + jsonValue );
}

那么,您需要向servlet发送一个格式正确的JSON对象(作为字符串)。可能最简单的方法是创建一些javascript对象并用这些对象填充数组。然后,数组数据应该是 转换为JSON字符串(使用JSON.stringify)。我将对对象值进行硬编码(但您将从表中获取它们)

Javascript代码

function generateJson(){
  var myObjArr = [];
//you will typically have just one object (e.g. myObj, which you will fill  in your ajax table loop 
  //myObj.v1 = v1_val;
  //myObj.v2 = v2_val;
  ...
  //myObjArr[i] = myObj; //
  myObj1 = { "v1": "Orange", "v2": "ABC", "v3":10,"v4":"OK"  };
  myObj2 = { "v1": "Apple", "v2": "XYZ", "v3":25,"v4":"OK"  };

  myObjArr[0] = myObj1;
  myObjArr[1] = myObj2;

 var jsonObjStr = JSON.stringify(myObjArr);
 //you can now use jsonObjStr to send your data to the servlet
 // document.getElementById("json").innerHTML = jsonObjStr;//this is just added for testing purposes
 }
生成的JSON

[{"v1":"Orange","v2":"ABC","v3":10,"v4":"OK"},{"v1":"Apple","v2":"XYZ","v3":25,"v4":"OK"}]
如您所见,json字符串以[(表示数组)开头。根据json解析器的工作方式({}表示对象),您可能必须将其更改为以{(和})开头


对于servlet部分,这取决于您使用的实际JSON解析器。请尝试使用其他人提供的一些建议。虽然我可以使用Jackson提供一些代码,但您必须将Jackson库添加到类路径中。

S。当我使用缓冲区读取器而不是getparameter时,我收到如下消息。JSON%5B0%5D%5B%5D=1&JSON%5B0%5D%5B%5D=2604ssbt10x40 json字符串(myTableArray)在发送到servlet之前是什么样子的?@dsp_用户:我已经添加了该图像。请检查该图片上的文本看起来一点都不像json。我希望类似于{[{“var1”:“val1”,“var2”:“val2”,“var3”:“val3”},{“var1”:“val1”,“var2”,“var3”:“val3”}(例如,这个json包含2个对象,每个对象都有3个字段/属性/变量)@dsp_user:这是在stringify之前。我们也可以不带键传递吗?我想你不是在发送json,首先将数组解析成json,如var json=json.stringify(myTableArray);并发送此jsondata@Dillip:我尝试了你建议的解析方法。但即使在一行JSONObject jsonObj=new JSONObject(request.getParameter(“myTableArray”);我也遇到了空指针异常;这是因为我在传递I/p时也有空指针吗?你是用JavaScript还是java解析的?在JS var json=json.stringify(myTableArray)中;和使用的数据:json,在ajax中