Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
jQuery没有将URL参数发布到Jersey服务?_Jquery_Ajax_Jersey - Fatal编程技术网

jQuery没有将URL参数发布到Jersey服务?

jQuery没有将URL参数发布到Jersey服务?,jquery,ajax,jersey,Jquery,Ajax,Jersey,这看起来很简单,但我不明白为什么它不起作用 我有一个新泽西服务定义: @POST public SomeObject createSomeObject( @QueryParam("firstParam") String firstParam, @QueryParam("secondParam") String secondParam) { // Does stuff, returns the object. } 现在,如果我做一个简单的curl,它可以正常工作: cur

这看起来很简单,但我不明白为什么它不起作用

我有一个新泽西服务定义:

@POST
public SomeObject createSomeObject(
    @QueryParam("firstParam") String firstParam,
    @QueryParam("secondParam") String secondParam)
{
    // Does stuff, returns the object.
}
现在,如果我做一个简单的
curl
,它可以正常工作:

curl-X POST”http://localhost:8080/path/to/service?firstParam=Bleh&secondParam=Blah

但是,以下结果导致Java中firstParam和secondParam的
null

$.ajax({
    url: '/path/to/service',
    type: 'POST',
    data: {
        firstParam: 'Bleh',
        secondParam: 'Blah'
    },
    success: doStuff,
    error: eek
});
这似乎是荒谬的直截了当。我觉得他们的行为应该完全相同。我错过了什么?我尝试过的东西(但似乎没有必要):

  • contentType:'application/x-www-form-urlencoded'
    添加到
    ajax
    调用中
  • 向Jersey服务添加
    @消费(MediaType.APPLICATION\u FORM\u URLENCODED)
  • JSON.stringify
    包装数据对象(我知道当
    contentType:'JSON'
    时我需要这样做,但不应该在这里这么做

我知道我可以自己编写URL参数并将其填入URL中,但这似乎不雅观,我不应该这样做。

如果您使用POST发送多个参数,您必须执行应用程序/x-www-form-urlencoded POST,这样在请求中对参数进行编码,如:

firstParam=Bleh&secondParam=Blah
但是,要使用这些参数,必须对函数参数进行如下注释:

@POST
public SomeObject createSomeObject(@FormParam("firstParam") String firstParam,
                                   @FormParam("secondParam") String secondParam) {
    // Does stuff, returns the object.
}
请注意,注释是@FormParam而不是@QueryParam

请注意,如果执行“普通”POST,则函数只能有一个参数来接收取消发布的数据(从查询字符串url params分配的参数中获取APPAT)

上面是一个jquery请求,正如@FutureTematics所说,我们需要contentType:“application/x-www-form-urlencoded;charset=utf-8”。 然后在Jersey服务中添加@Consumes({MediaType.APPLICATION\u FORM\u URLENCODED})

@POST
@Produces({ MediaType.APPLICATION_JSON})
@Consumes( {MediaType.APPLICATION_FORM_URLENCODED})
public String execute(@FormParam("stoYardName") String data,
                       @FormParam("domTree") String domTree
                                    ) {
            .........

}

很有趣。我从来都不知道@FormParam。我回家后会试试的!谢谢!
@POST
@Produces({ MediaType.APPLICATION_JSON})
@Consumes( {MediaType.APPLICATION_FORM_URLENCODED})
public String execute(@FormParam("stoYardName") String data,
                       @FormParam("domTree") String domTree
                                    ) {
            .........