将FormParams与Jersey和jQuery一起使用
Using FormParams with Jersey and jQuery
这似乎是一个经常被问到的不常被回答的问题。文件有些含糊。
我想发布一组参数如下所述。Web服务:
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response post(@FormParam("param") String param){
// code..
}
javascript:
//var paramData = {"startDate":$("#startDate").val()};
var paramData = {startDate:$("#startDate").val()};
$.ajax({
type : 'POST',
url : 'mysite.com/post',
data: paramData,
contentType: 'application/x-www-form-urlencoded',
processData: false,
});
我已将contentType更改为false,尝试对参数数据进行序列化和字符串化,等等。要么该参数在服务中为null,要么返回不支持的媒体类型HTTP错误代码。
你做错了
1。默认情况下,您的contentType
将是application/x-www-form-urlencoded
,因此无需指定。
2.为什么要使用processData: false
?你应该从这里阅读文档:
http://api.jquery.com/jQuery.ajax/
processData(默认值:true)
类型:布尔
默认情况下,传入的数据将数据选项作为对象(从技术上讲,除了字符串)将被处理并转换为查询字符串默认内容类型"application/x-www-form-urlencoded"。如果如果要发送DOMDocument或其他未处理的数据,请设置选项设置为false。
3。由于默认情况下processData
是true
,您不需要它是false
,因此无需指定它。
4.您只是传递一个Object
作为data
,但您在哪里指定了param
,因为这是您用于方法的名称?看一看:public Response post(@FormParam("param") String param)
5.由于您的param
是String
,您需要将Object
转换为queryString
(与序列化表单相同),并且您可以使用jQuery
轻松完成此操作,因此您应该阅读以下内容:http://api.jquery.com/jquery.param/
6.因此,最后您的代码必须如下所示:
var data = {
name: 'Oscar',
lastname: 'Jara'
};
$.ajax({
type: 'POST',
url: 'rest/service',
data: {
param: $.param(data)
}
});
7.现在,如果您在REST
服务中打印param
变量包含的内容,您将得到以下内容:
name=Oscar&lastname=Jara
- 将jQuery UI Timepicker Addon与React一起使用
- 将FormParams与Jersey和jQuery一起使用
- 将Jquery与wordpress主题一起使用
- 存储数据的最佳方式是什么,以便与jquery一起使用
- 将jQuery.css()与变量一起使用
- 如何将jquery ui与requirejs一起使用
- 注入的元素和jQuery脚本.如何让他们一起工作
- 有条件地创建ajax url参数以与jQuery Validate一起使用
- 在使用 Django 静态文件时动态设置映像时,只有绝对路径才能与 jquery 一起使用
- 使一组对象与 jQuery 一起拖动
- 将 jQuery UI 日期选择器与异步 AJAX 请求一起使用
- 通过 jQuery Find and Replace 将文本 URL 与 标记包装在一起
- 将jQuery动画与angular的ngAnimate一起使用
- 将 jQuery trigger() 与 hoverIntent 一起使用
- Jquery 工具提示未随 AJAX 数据加载一起显示
- Jquery animate 不能与 IE 一起使用 - 什么也没发生
- jQuery脚本不想一起工作
- While循环与jquery中的某些数学函数一起崩溃
- 合并多个画布在一个单一的DIV一起- JQuery
- 如何让两个框架拖在一起?(jQuery)