jsp中利用jquery+ajax在前后台之间传递json格式参数
程序员文章站
2023-11-24 22:30:58
经过一段时间的实验琢磨,终于将前后台之间的参数传递搞定了,实验所用工具myeclipse+structs1.2。 总结:容易出错的地方:1.ajax中data的格式一定要写...
经过一段时间的实验琢磨,终于将前后台之间的参数传递搞定了,实验所用工具myeclipse+structs1.2。
总结:容易出错的地方:1.ajax中data的格式一定要写对,这里举了两种形式,一种是 data:{参数:“”} 另一种是 data:“参数=”+变量。
2.后台传递到前台数据转化为json格式,步骤要掌握好。
3.在js使用jquery必须要引用进来,否则会不执行jquery语句,这个问题困扰了我半天才解决掉,菜鸟的悲哀啊。jquery引用流程如下:网上下载jquery.js,jquery-1.4.2.min.js两个js文件,放在webroot下的文件夹js中,引用代码如下:
<script src="<%=path%>/js/jquery.js" language="javascript"type="text/javascript"></script>
<script src="<%=path%>/js/jquery-1.4.2.min.js" language="javascript"type="text/javascript"></script>
其中<%=path%>就代表了根目录wenroot文件目录。
4.ajax的url路径必须要写对。
5.当前台没有传递参数到后台时,data可以不用写,或用data:{}代替。
前台代码如下:
<span style="white-space:pre"> </span>var checkvalue=$("#s1").val();
<span style="white-space:pre"> </span>//这个var是获取的id问s1的select选择的opention值
$
.ajax({
type : "post",
url : "getshowdatalist.do",
async : true,
//data:{data:""},这种也可以
data :
"filepath="+checkvalue
<span style="white-space:pre"> </span>//data:中的是传递到后台的数据,这里数据格式为json格式
,
datatype : "json",
error : function() {
//alert(checkvalue);
alert('加载失败!');
},
success : function(json) {
<span style="white-space:pre"> </span>//这里的json是后台传递过来的数据,这里数据格式也是json格式
前台获取后台的json格式list数据集,这段写在function中
var points = [];//创建数组
for ( var i = 0; i < json.length; i++) {
var str = new openlayers.lonlat(json[i].lon,
json[i].lat);
points.push(str);
}
后台代码:
public actionforward execute(actionmapping mapping, actionform form,
httpservletrequest request, httpservletresponse response) {
string filepath = request.getparameter("filepath");
<span style="white-space:pre"> </span>//获取前台传递过来的filepath
system.out.println(filepath);
list<show> datalist = getshowdata(filepath);
response.setcontenttype("appliction/json;charset=utf-8");
jsonarray jsonarray = jsonarray.fromobject(datalist);
try {
printwriter out = response.getwriter();
out.print(jsonarray);
for (int i = 0; i < jsonarray.size(); i++) {
system.out.println(jsonarray.get(i));
}
out.flush();
} catch (exception e) {
e.printstacktrace();
}
return null;
}
总结:容易出错的地方:1.ajax中data的格式一定要写对,这里举了两种形式,一种是 data:{参数:“”} 另一种是 data:“参数=”+变量。
2.后台传递到前台数据转化为json格式,步骤要掌握好。
3.在js使用jquery必须要引用进来,否则会不执行jquery语句,这个问题困扰了我半天才解决掉,菜鸟的悲哀啊。jquery引用流程如下:网上下载jquery.js,jquery-1.4.2.min.js两个js文件,放在webroot下的文件夹js中,引用代码如下:
<script src="<%=path%>/js/jquery.js" language="javascript"type="text/javascript"></script>
<script src="<%=path%>/js/jquery-1.4.2.min.js" language="javascript"type="text/javascript"></script>
其中<%=path%>就代表了根目录wenroot文件目录。
4.ajax的url路径必须要写对。
5.当前台没有传递参数到后台时,data可以不用写,或用data:{}代替。
前台代码如下:
复制代码 代码如下:
<span style="white-space:pre"> </span>var checkvalue=$("#s1").val();
复制代码 代码如下:
<span style="white-space:pre"> </span>//这个var是获取的id问s1的select选择的opention值
$
.ajax({
type : "post",
url : "getshowdatalist.do",
async : true,
//data:{data:""},这种也可以
data :
"filepath="+checkvalue
复制代码 代码如下:
<span style="white-space:pre"> </span>//data:中的是传递到后台的数据,这里数据格式为json格式
,
datatype : "json",
error : function() {
//alert(checkvalue);
alert('加载失败!');
},
success : function(json) {
复制代码 代码如下:
<span style="white-space:pre"> </span>//这里的json是后台传递过来的数据,这里数据格式也是json格式
前台获取后台的json格式list数据集,这段写在function中
复制代码 代码如下:
var points = [];//创建数组
for ( var i = 0; i < json.length; i++) {
var str = new openlayers.lonlat(json[i].lon,
json[i].lat);
points.push(str);
}
后台代码:
复制代码 代码如下:
public actionforward execute(actionmapping mapping, actionform form,
httpservletrequest request, httpservletresponse response) {
string filepath = request.getparameter("filepath");
复制代码 代码如下:
<span style="white-space:pre"> </span>//获取前台传递过来的filepath
system.out.println(filepath);
list<show> datalist = getshowdata(filepath);
response.setcontenttype("appliction/json;charset=utf-8");
jsonarray jsonarray = jsonarray.fromobject(datalist);
复制代码 代码如下:
try {
printwriter out = response.getwriter();
out.print(jsonarray);
for (int i = 0; i < jsonarray.size(); i++) {
system.out.println(jsonarray.get(i));
}
out.flush();
} catch (exception e) {
e.printstacktrace();
}
return null;
}