通过角度js中的ajax调用发送数组

时间:2015-02-07 22:36:44

标签: ajax angularjs

我使用以下代码将一些信息发送到我的servlet来处理数据:

 $http({
                method: "GET",
                url: "http://localhost:8080/purchase/AddInfo",
                data: {
                    addArray : "sample"
                }
            })
                .success(function (data, status, headers, config) { 
                     typesHash.push( {id:data.id,name : data.name, price : data.price,unit:2.5 });
                })
                .error(function (data, status, headers, config) { 

                });

它完美无缺; 但是正如你所看到的,我希望将参数作为数组发送而不是字符串,假设我有一个数组如下:

  var typesHash=[
                 {id:'1', name : 'lemon', price : 100,unit:2.5 },       
                 {id:'2', name : 'meat', price : 200,unit:3.3  }];

现在我想将这个数组发送到服务器,一个快速而丑陋的方法是循环遍历我拥有的数组并发送信息作为字符串但我相信应该有更好的方法,可以任何一个帮助?

更新:因为建议我将代码更改为以下内容:

 $http({
                method: "post",
                url: "http://localhost:8080/purchase/AddInfo",
                    addArray : typesHash

            })
                .success(function (data, status, headers, config) { 
                     typesHash.push( {id:data.id,name : data.name, price : data.price,unit:2.5 });
                })
                .error(function (data, status, headers, config) { 

                });

但是当我试图欺骗它时我得到null,这就是我在servlet中收到它的方式:

String arr= request.getParameter("addArray");
    System.out.println(arr);

更新2:这是最新的代码

我的servlet:

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub

    String actionType = request.getParameter("addArray");
    System.out.println(actionType);
    PrintWriter out = response.getWriter();
    response.setContentType("text/html");
    String str = "{ \"id\": \"1\",\"name\": \"ali\",\"price\": \"100000\"}";
    // System.out.println(str);
    out.println(str);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    doGet(request, response);

}

我的js:

 $http({
                method: "post",
                url: "http://localhost:8080/purchase/AddInfo",
               data: { addArray : typesHash } 


            })
                .success(function (data, status, headers, config) { 
                     typesHash.push( {id:data.id,name : data.name, price : data.price,unit:2.5 });
                })
                .error(function (data, status, headers, config) { 

                });

2 个答案:

答案 0 :(得分:1)

嘿,你可以这样做: -

 $http({
      method: 'POST',
      headers: {'Content-Type': 'application/json'},
      url: "http://localhost:8080/purchase/AddInfo",
      data: { addArray : typesHash } 


        })
            .success(function (data, status, headers, config) { 
                 typesHash.push( {id:data.id,name : data.name, price : data.price,unit:2.5 });
            })
            .error(function (data, status, headers, config) { 

            });

来源: - http://www.doublecloud.org/2013/09/angular-javascript-framework-interacting-with-java-servlet-backend/

答案 1 :(得分:0)

HTTP中有几种方法: ' GET' - 允许您接受来自请求的服务器的数据。 ' POST' - 允许您将数据发送到服务器并接受。 ' PUT' - 更新数据 等...

试试这段代码:

$http({
            method: "post",
            url: "http://localhost:8080/purchase/AddInfo",
                {addArray: typesHash}

        })
            .success(function (data, status, headers, config) { 
                 typesHash.push( {id:data.id,name : data.name, price : data.price,unit:2.5 });
            })
            .error(function (data, status, headers, config) { 

            });