我想以 POST 方式进行 ajax 调用,它将转到我的 servlet。我想发送参数化数据,如下所示:
var mydata = 'param0=some_text¶m1=some_more_text';
我将其作为 jquery ajax() 调用的“data”参数提供。所以这应该插入到 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');
Thanks!
一种更简单的方法是提供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()
}
});
Edit:如果你好奇 jQuery 如何在内部进行这种编码,它正在使用$.param() http://api.jquery.com/jQuery.param/(您也可以直接使用)将对象编码为字符串,称为here http://github.com/jquery/jquery/blob/master/src/ajax.js#L209,还有胆量here http://github.com/jquery/jquery/blob/master/src/ajax.js#L507.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)