使用ajax和jquery来点击泽西网址并传递数据

时间:2013-04-24 19:54:00

标签: java jquery ajax jersey

Homepage.jsp:

<script type="text/javascript">
var startZArray = new Array();

function add()
{
  var startZ = $('#startZ').val();
  startZArray.push(startZ);
}

function submitP()
{
  $.ajax({
  type: "POST",
  url:"/horn/rest/main/schedule",
  data: startZArray,
  success:function()
  {alert('worked');}
  });
}
</script>

Homepage.java

  @POST
  @Path("/schedule")
  public void tigerMessage(
      @Context final HttpServletResponse response,
      @Context final HttpServletRequest request) throws Exception
  {
    String[] myParams = request.getParameterValues("startZArray");
    System.out.println(myParams);
  }

不幸的是myParams打印出null。我知道内部添加startZArray正在填充。但我不确定数据是否:startZArray是传递它的正确方法。另外我知道泽西岛的网址被点击了,因为我确实看到空打印出来了。有没有人有任何想法?

编辑:

当我这样做时:

[~] curl -i -X POST -d "{\"startZArray\":\"testMessage\"}" http://localhost:8080/horn/rest/main/schedule
HTTP/1.1 204 No Content
Server: Apache-Coyote/1.1
Date: Wed, 24 Apr 2013 20:15:18 GMT

我仍然是null,所以我觉得我的java代码有问题吗?

EDIT2:

我更新了调试submitP()方法:

function submitP()
    {
        var myarray = ['Element 1', 'Element 2', 'Element 3'] ;
        var dataobject = {
            postvar: myarray
        } ;

        $.ajax({
                    type: "POST",
                    url:"/horn/rest/main/schedule",
                    data: dataobject,
                    success:function()
                    {
                        alert('worked');
                     }
                });
    } 

当我在firebug中运行代码时,输​​出文章看起来像这样:

Paramaters:
postvar[]   Element 1
postvar[]   Element 2
postvar[]   Element 3

Source:
postvar%5B%5D=Element+1&postvar%5B%5D=Element+2&postvar%5B%5D=Element+3

该帖子的状态为204,并且出于某种原因说“无内容”。

我还尝试将postvar[]和普通postvar放入getParameterValues方法,但没有运气。

2 个答案:

答案 0 :(得分:1)

您没有使用参数发送数据,因此无法通过startZArray

获取该数据
request.getParameterValues("startZArray");

试试这个 -

$.ajax({
  type: "POST",
  url:"/horn/rest/main/schedule",
  data:{ "startZArray" : startZArray },
  success:function()
  {alert('worked');}
});

答案 1 :(得分:1)

使用Edit2中的submitP()

在球衣中试试这个

  @POST
  @Path("/schedule")
  public String tigerMessage(
      @FormParam("postvar[]") List<String> vars) throws Exception
  {
    System.out.println(vars)
    return ""
  }

更新

另一种方法

  @POST
  @Path("/schedule")
  public String tigerMessage(
      Form form) throws Exception
  {
    System.out.println(form);
    // Then get parameters from form
    return ""
  }