使用jquery进行POST,如何正确提供'data'参数?
我想做一个ajax调用作为一个POST,它会去我的servlet。我想送参数数据,如下所示:使用jquery进行POST,如何正确提供'data'参数?
var mydata = 'param0=some_text¶m1=some_more_text';
我提供这个作为我的jQuery的ajax()调用的“数据”参数。所以这应该被插入到POST的正文中,对吗? (我的意思是,没有附加到我的'mysite/save'网址?):
$.ajax({
url: 'mysite/save',
type: 'POST',
data: mydata
});
它似乎工作正常。在我的servlet,我只是倾销所有收到的参数,我看到他们都来过很好:
private void printParams(HttpServletRequest req) {
Enumeration paramNames = req.getParameterNames();
while (paramNames.hasMoreElements()) {
// print each param key/val here.
}
}
也是,我应该URL中使用之前手动编码我的数据串,是吗?如:
var mydata = 'param0=' + urlencode('hi there!');
mydata += '¶m1=' + urlencode('blah blah');
mydata += '%param2=' + urlencode('we get it');
谢谢!
更简单的方法是提供data
属性作为对象,像这样:
$.ajax({
url: 'mysite/save',
type: 'POST',
data: { param0:'hi there!', param1:'blah blah', param2:'we get it' }
});
否则,是你应该以&
例如编码它,因为任何事情会很快搞砸。无论如何,将它作为一个对象是一个更清洁/更简单的方法。
您还可以空出来,和在线获取来自其他地方的性质,像这样:
$.ajax({
url: 'mysite/save',
type: 'POST',
data: {
param0: $('#textbox0').val(),
param1: $('#textbox1').val(),
param2: $('#textbox2').val()
}
});
编辑:如果你好奇的jQuery内部是怎样做到这一点的编码,它使用$.param()
(其您也可以直接使用)将对象编码为字符串,称为here,胆号here。
如果你有一个表格,你也可以做var data = jQuery("#myForm").serialize();
,它把它放在一个jQuery.ajax
可以理解和使用的形式。否则,使用Nick的答案中描述的对象字面值。
这可以帮助你
function CallPageSync(url, data) {
var response;
$.ajax({
async: false,
url: url,
data: data,
timeout: 4000,
success: function(result) {
response = result;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
response = "err--" + XMLHttpRequest.status + " -- " + XMLHttpRequest.statusText;
}
});
return response;
}
,你可以这样调用它
response = CallPageSync(checkPageURL, "un=" + username);
我想他想知道* how *如何构建'data'参数,而不是如何使用'jQuery.ajax'。 – 2010-06-17 22:22:54
只需在网址中填写即可: “ID = 10&Name = aaaaa” – 2010-06-17 22:33:23
定义提交类型比较好,我认为.. 类型:'POST' – 2017-07-03 10:17:06
你不需要URL编码POST变量。但是,如果您正在与数据库进行交互,则需要确保您的变量受到注入攻击保护。
你有什么工作,但作为Vivin提到,如果它是一种形式,那么最好的办法是通过.serialize()
。
我个人使用这个LOT所有我的表单提交(通过.ajax()
完成)。
非常酷,谢谢。 – user246114 2010-06-17 22:41:53