如何通过prototype.js在body和queryparam中发送数据?

时间:2014-02-19 16:59:15

标签: javascript ajax prototypejs javascript-framework

我的服务(RESTful JAX-RS)正在接收如下值。

public Response methodName(String content,
        @QueryParam("valueONE") String one,
        @QueryParam("valueTWO") String two,
        @QueryParam("valueTHREE") String three)

从Ajax调用我必须将值传递给该服务。在我的场景中,我尝试过如下。这对我不起作用。

try {
    new Ajax.Request(url, {
        method : 'post',
        postBody : {
            Object.toJSON(content),
            valueONE : one,
            valueTWO : two,
            valueTHREE : three,
        },
        onSuccess : function(response) {
            alert('Success Response' + response.responseText);
        },
        onFailure : function(response) {
            alert('Request has not been hit to the server.'
                    + response.responseText);
        }
    });
} catch (err) {txt = "_____ERROR_____\n\n";
        txt += "ERROR DESCRIPTION : " + err.message + "\n\n";
        txt +=" Click OK to continue."; 
        alert(txt);
}

我不知道如何通过body以及Prototype.js中的queryparameter传递值。非常感谢任何帮助。

此致 ArunRaj

1 个答案:

答案 0 :(得分:2)

当您的请求方法发布时,您在请求中设置的任何参数都将在请求正文中发送。也可以在您发送到的URL中手动构建一些查询字符串参数,尽管这绝对不是发送POST的正确方法(即包含其中的边车GET)。

new Ajax.Request('path/to/server', {
  parameters: {
    foo: 'One',
    bar: 'Two',
    baz: 'Three'
  }
});

这将导致在请求正文中填充一组POST变量[foo,bar,baz]。

new Ajax.Request('path/to/server?boo=Four&blarg=Five', {
  parameters: {
    foo: 'One',
    bar: 'Two',
    baz: 'Three'
  }
});

根据服务器的松弛,这可能导致相同的POST以及由查询字符串填充的一组GET变量[boo,blarg]。在PHP服务器上,它们被整理到REQUEST全局对象中,同名的GET变量被POST等价物覆盖,因此您不必单独查询这两组表单数据。