对于使用jquery进行POST,如何正确提供'data'参数?感兴趣的读者,本文将提供您所需要的所有信息,并且为您提供关于Asp.net下使用JqueryAjax传送和接收DataTable的代码_
对于使用 jquery 进行 POST,如何正确提供 'data' 参数?感兴趣的读者,本文将提供您所需要的所有信息,并且为您提供关于Asp.net下使用Jquery Ajax传送和接收DataTable的代码_jquery、bootstrap data与jquery .data_jquery、html5的自定义data-*属性和jquery的data()方法的使用示例_jquery、jquery datatable 使用api进行搜索的宝贵知识。
本文目录一览:- 使用 jquery 进行 POST,如何正确提供 'data' 参数?
- Asp.net下使用Jquery Ajax传送和接收DataTable的代码_jquery
- bootstrap data与jquery .data_jquery
- html5的自定义data-*属性和jquery的data()方法的使用示例_jquery
- jquery datatable 使用api进行搜索
使用 jquery 进行 POST,如何正确提供 'data' 参数?
我想以 POST 的形式进行 ajax 调用,它将发送到我的 servlet。我想发送参数化数据,如下所示:
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'');
谢谢!
答案1
小编典典一种更简单的方法是将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()
(您也可以直接使用)将对象编码为一个字符串
Asp.net下使用Jquery Ajax传送和接收DataTable的代码_jquery
服务器再把GridView反构造成DataTable, 再给DataTable增加一行之后,绑定到GridView,然后发回客户端...
能不能简单一点呢?
在使用Ajax数据请求数据,通常都是简单格式,比如String,信息量较少。当然也可以请求回XML,但是XML数据冗余多,取到客户端处理比json麻烦的多。
能不能简单一点呢?
上面这些问题,如果DataTable与JSON类型可以方便的相互转换,都可以迎刃而解了。
优点:1)避免不必要的回传;
2)精简异步请求数据的大小 ;
3)解决数据量较大时,数据发送与接收繁琐的问题。
既然好处这么多,我们上代码吧。
前台代码:
后台代码:
///
/// 页面加载时
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
//判断是否异步请求
if (Request.QueryString["ajax"] == "1")
{
ProcessRequest();
}
}
///
/// 处理异步请求
///
private void ProcessRequest()
{
Response.ContentType = "text/html";
string json = Request.Form["json"];
//反序列化DataTable
DataTable newdtb = Json2Dtb(json);
//序列化DataTable为JSON
string back = Dtb2Json(newdtb);
Response.Write(back);
Response.End();
}
///
/// DataTable转Json
///
///
///
private string Dtb2Json(DataTable dtb)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = new ArrayList();
foreach (DataRow row in dtb.Rows)
{
Dictionary
foreach (DataColumn col in dtb.Columns)
{
drow.Add(col.ColumnName, row[col.ColumnName]);
}
dic.Add(drow);
}
return jss.Serialize(dic);
}
///
/// Json转DataTable
///
///
///
private DataTable Json2Dtb(string json)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = jss.Deserialize
DataTable dtb = new DataTable();
if (dic.Count > 0)
{
foreach (Dictionary
{
if (dtb.Columns.Count == 0)
{
foreach (string key in drow.Keys)
{
dtb.Columns.Add(key, drow[key].GetType());
}
}
DataRow row = dtb.NewRow();
foreach (string key in drow.Keys)
{
row[key] = drow[key];
}
dtb.Rows.Add(row);
}
}
return dtb;
}