使用jquery进行POST,如何正确提供'data'参数?

2024-01-11

我想以 POST 方式进行 ajax 调用,它将转到我的 servlet。我想发送参数化数据,如下所示:

var mydata = 'param0=some_text&param1=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 += '&param1=' + 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(使用前将#替换为@)

使用jquery进行POST,如何正确提供'data'参数? 的相关文章

随机推荐