有关$.post(url,{param:"param"},function(data){})中的返回对象data

41 篇文章 0 订阅
22 篇文章 0 订阅

之前用了$.post()已经很久了,可是从来没有好好研究过这里的data对象,今天好好总结下:

jquery文档中说,这里的data类型可以是:xml, html, script, json, text, _default

下面介绍我用过的几种:

1.json

后台:

PrintWriter out = null;
try {
JSONArray json = JSONArray.fromObject(list);
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().setCharacterEncoding("UTF-8");
out = getResponse().getWriter();
out.write(json.toString());//返回json字符串
out.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
}

前台:

 $.get(url, { "searchContent": searchContent }, function(data) {
        cache[searchContent]=data;//保存缓存
        var d = eval("("+data+")");//通过eval() 函数可以将JSON字符串转化为对象。---这里没有给$.get()配置返回类型,直接调用这个则自动识别为json
$($autocomplete).css({"left":$("#search-text").position().left,"top":$("#search-text").position().top+32});
         var li = "<li style='padding-left:5px;text-align:left;background-color: white;width:395px;position: relative;height: "+height+"'></li>";
                $autocomplete.empty();
                $.each(d, function(index, term) {//jquery的each函数$.each(data,function(index,item){})
clientTypeId = term.dim.id;
version = term.version.name;

}

}


2.text

用于唯一性检查

后台:

@Action("checkOemTag")
public void checkOemTag() {
String oemTag = this.getRequest().getParameter("oemTag");

List<DimOemtag> dimOemtags = dimOemtagManager.getTagByOemTag(oemTag);
PrintWriter out;
try {
out = this.getResponse().getWriter();
if(dimOemtags!=null&&dimOemtags.size()!=0){
out.print("exist");//直接返回字符串
out.flush();
out.close();
}else{
out.print("noexist");
out.flush();
out.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

前台:

$.post(base+"/manager/tag/checkOemTag.feinno",
{oemTag:thisObjVal},
function(data){
if("exist"==data){//直接返回是一个字符串
thisObj.css("background-color","pink");
thisObj.css("color","red");
var left = thisObj.offset().left;
var height = thisObj.height();
var width = thisObj.width();
var top = thisObj.offset().top;
top = top+height+3;
thisErrorMsgObj.css("display","block");
}else{
thisObj.css("background-color","");
thisObj.css("color","");
thisErrorMsgObj.css("display","none");
$(OEMTagTD).find("#tagNameTD").css("height","30");
$(OEMTagTD).find("#tagName").css("height","30");

}
},"text"//这个非常重要,如果直接返回一个字符串,用text,经过测试,如果不写,也不用eval函数则默认是xml

);


------------------------------------------------------------------------------------------------------------------------------

用ajax来显示等待动态gif图,

步骤1:页面本身就有一个动态的gif图片

步骤2:调用ajax或者$.post()返回,在回调函数中把步骤1的动态图去掉(通过控制样式)


=======================================ajax填充表单页面,日期类型显示为【Object】====================================================


解决办法方法:





### 回答1: $.post 方法可以通过设置参数对象来动态设置参数名。例如: ``` var params = {}; params[paramName] = paramValue; $.post("url", params, function(data) { // 处理返回数据 }); ``` 其paramName 和 paramValue 可以动态设置。 ### 回答2: 在使用$.post进行数据请求时,通常我们会将参数名固定,比如: ``` $.post(url, {key1: value1, key2: value2}, function(response){ //处理返回结果 }); ``` 在这个例子,参数名是固定的,为key1和key2。但是有时候我们希望根据不同的情况来设置动态的参数名。 有一个简单的方法可以实现这个需求,就是使用ES6的计算属性名。通过使用方括号 [] 来设置参数名,我们可以将参数名设为一个变量或是通过表达式来动态设置。比如: ``` let parameterName = 'key1'; let parameterValue = 'value1'; let data = { [parameterName]: parameterValue, // 使用计算属性名 key2: 'value2' }; $.post(url, data, function(response){ //处理返回结果 }); ``` 在这个例子parameterName为参数名变量,我们在data对象通过使用计算属性名的方式将其作为动态的参数名。这样,当parameterName的值改变时,data对象的参数名也会相应改变。 这种方法可以在我们需要根据不同情况设置动态参数名的场景很有用。同时,我们也可以通过表达式的方式来设置参数名,比如使用条件判断、追加字符串等。这样我们就能够根据具体需求来灵活地设置参数名。 ### 回答3: 在使用$.post发送POST请求时,我们可以通过设置动态参数名来传递不同的数据。 首先,动态参数名一般是通过变量来定义的。我们可以将变量的值作为参数名,然后将对应的值作为参数值传递给后端服务器。例如: ```javascript var paramName = "username"; var paramValue = "John"; $.post(url, {[paramName]: paramValue}, function(data){ // 处理返回的数据 }); ``` 以上代码,我们定义了变量paramName为"username",它将作为参数名传递给服务器。然后我们定义了变量paramValue为"John",它将作为参数值传递给服务器。我们使用了ES6的语法,以变量paramName的值作为属性名来构建参数对象。最后,我们通过$.post发送了一个POST请求,并将参数对象作为参数传递给服务器。 在后端服务器接收到请求时,可以通过动态参数名来获取对应的参数值。具体的操作方式取决于后端服务器的编程语言和框架。 总结起来,通过设置动态参数名,我们可以在$.post请求传递不同的数据。这样可以提高代码的灵活性和可复用性,同时也便于在前后端之间传递多样化的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值