前台用ajax传值给ASPX页面并用art.daolog打开aspx页面怎么没有数据显示(请大神帮忙解决下)?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前台用ajax传值给ASPX页面并用art.daolog打开aspx页面怎么没有数据显示(请大神帮忙解决下)?相关的知识,希望对你有一定的参考价值。
前台ajax发生请求
$.ajax(
type: 'POST',
async: "false",
url: '../edit.aspx',
dataType: "html",
data: "start": start ,
success: function (msg)
,
Error: function (err)
)
,
后台aspx页面接收数据
string start = Request.Form["start"];
title.Text = start;
art.dailog打开页面后title没有显示数据。
art.dialog.open(("edit.aspx"),
lock: true,
title: '新建事件',
width: 550,
height: 650,
ok: function ()
this.title('提交中…');
,
cancelValue: '取消',
cancel: function ()
alert('你点了取消按钮')
,
),
* 说明:
* 通过CORS解决跨域问题
* 并将数据挂接到物体(car01)身上,与panel面板进行数据绑定
* 当温度>25℃时 car01变红
* 教程:ThingJS教程——>数据对接——>Ajax对接
* 难度:★★☆☆☆
*/
var app = new THING.App(
url: \'https://www.thingjs.com/static/models/storehouse\'
);
// 定时器
var timer;
app.on(\'load\', function ()
var car = app.query(\'car01\')[0];
// 物体身上创建monitorData对象 用于存储动态监控数据
car.monitorData =
\'温度\': \'\'
;
updateData(car);
createPanel(car);
)
/** ******************* 以下为ajax数据对接 ********************/
// 服务器程序端 通过设置 Access-Control-Allow-Origin 解决跨域问题
// 更多关于 CORS "跨域资源共享"(Cross-origin resource sharing)的技术细节 请自行搜索
// 请求传入参数为 "id": id
// 服务器返回的数据格式为 "state":"success","data":"id":"4967","temper":"15℃","humi":"59%","power":"20kWh"
function updateData(obj)
// 如果网站是 https 接口则对应 https 请求
// 如果网站是 http 接口则对应 http 请求即可
$.ajax(
type: "get",
url: "https://3dmmd.cn/getMonitorDataById",
data: "id": obj.id ,
dataType: "json", // 返回的数据类型 json
success: function (d)
console.log(d);
var temper = d.data.temper;
// 设置物体身上的监控数据
obj.setAttribute("monitorData/温度", temper);
changeColor(obj);
// 每隔3s 请求一次数据
timer = setTimeout(function ()
updateData(obj)
, 3000);
);
// 停止请求数据
function stopUpdate()
clearTimeout(timer);
function createPanel(obj)
// 界面组件
var panel = new THING.widget.Panel(
titleText: \'car01温度\',
hasTitle: true
);
var monitorControl = panel.addBoolean( \'isOpen\': true , "isOpen").caption("监控开关");
// 将物体的monitor对象中的数据 与 panel 进行绑定
panel.add(obj.monitorData, \'温度\').name(\'温度\');
monitorControl.on(\'change\', function (ev)
if (ev)
updateData(obj);
else
stopUpdate();
)
// 如果温度>25 改变颜色
function changeColor(obj)
var temper = obj.getAttribute("monitorData/温度");
var value = temper.substr(0, temper.indexOf("℃"));
if (value > 25)
obj.style.color = \'rgb(255,0,0)\';
else
obj.style.color = null;
参考技术A 为什么这样的人很多很多为什么经历了很多的事情但是我们都知道了错误经历的事情又多了磨练的越多因为现在这个社会就是如的这样 参考技术B 在jQuery的ajax的success中把信息的console.log打印出来,检查数据格式。
查看浏览器NETWEORK中是否发送了XHR请求。追答
你这里接受了msg,但是没有对msg进行页面渲染。当然不会有数据显示
追问你好。非常感谢帮助。
第一次AJAX后页面edit.aspx是有接收到数据
在success中用console.log把信息打印出来的是一串字符串,
然后转到art.dialog.open(("edit.aspx")时
edit.aspx页面又接收了一遍数据但是是空数据。
jQuery Ajax传值给Servlet,在Servlet里接受参数乱码的解决方法
最近在学jquery ui,在做一个小功能的时候需要将前台的值获取到,通过Ajax传递给Servlet,然后再在返回数据结果,但是在Servlet接受参数的时候,通过后台打印,发现接受乱码,代码示例如下:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); String testword=request.getParameter("criticalword") System.out.println(testword); out.println(testword); out.flush(); out.close(); }
我只用的是ajax的get方式传递的,所以上面也只截取了doGet()方法的代码,那么对于乱码,会有哪几种情况呢,我谈一下我的看法,具体每个阶段的方法我会以代码和截图的方式给出:
1.保证jsp网页没有乱码
首先得确保你的JSP页面没有乱码,具体代码如下:
<%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>
这句话添加在网页最顶部就可以了,补充下page指令的两个参数的具体含义,很多人也许会用,但是我觉得还是有必要了解下的:
a.pageEncoding参数
pageEncoding属性用来指定JSP页面的字符编码,默认为ISO-8859-1,由于该方法不支持中文,所以,如果要指定JSP页面的字符编码方式支持中文编码,则需要将page指令的pageEncoding属性设置为"GB2312"、"GBk"或"UTF-8"。
b.contentType参数
contentType属性用来指定JSP页面输出内容的类型和字符编码方式。属性值中的内容类型部分可以为text/html(纯文本HTML页面)、text/plain(纯文本文件)等。
2.保证jQuery Ajax在传递前没有乱码
下面贴出的Ajax代码,我要给后台传递的参数是get类型,参数名叫criticalword,代码如下:
$(‘#search‘).autocomplete({ source:function(request,response){
alert(‘看看在传递前有没有乱码‘+request.term); $.ajax({ type:‘get‘, url:‘/SGAME/servlet/IndexSearchItems‘, data:{criticalword:encodeURI(request.term)}, success:function(response,status,xhr){ alert(response); } }); }, delay:100 })
正如我代码红色所标记的,你在传递前先alert()弹窗,测测看是不是你的js文件已经乱码,如果是的话,解决方法:
1.回查上一步是不是没解决
2.js文件编码问题:在资源管理器用记事本打开js,然后另存为,在编码里选择utf-8
如下图:
当你的第一个弹窗没有乱码,那说明在传给Servlet前没有问题,那个在进入下一步前先做一个准备工作,如上述红色代码所示,先给参数转码:
criticalword:encodeURI(request.term)
这个转码是为了防止在Servlet中出现接收乱码的函数,形式为:encodeURI(param)
3.保证Servlet在接受Ajax的参数时(request)没有乱码
到了这一步说明你离成功不远了,只需要先request和resopnse设置编码的方式,然后再解码即可,doGet代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); String testword=URLDecoder.decode(request.getParameter("criticalword"),"utf-8"); System.out.println(testword); out.println(testword); out.flush(); out.close(); }
其中主要有三个要点:
a.response.setContentType():用于设置响应回jsp或者Ajax的字符编码。
b.request.setCharacterEncoding():用于设置接收请求的响应编码。
c.URLDecoder.decode():此函数需要先导入java.net包,用于对Ajax的编码进行解码。
完成以上三个步骤后,你可以像我一样,在返回前加一个System.out.println(yourParam)试试,如果是中文那就没问题啦
4.保证Servlet在响应(response)给jsp没有乱码
其实在第三部的要点b设置好后,其实返回给html或jsp就应该之中文了。
博主之前在网上看到很多关于Ajax编码乱码的问题,但是能解决的真的不多,所以希望能写一篇介绍全面的blog,希望能在帮助大家解决问题的同时,顺便了解一下整个编码过程,另外,关于这个还有什么疑问的话,欢迎给我发送邮件:[email protected]。
以上是关于前台用ajax传值给ASPX页面并用art.daolog打开aspx页面怎么没有数据显示(请大神帮忙解决下)?的主要内容,如果未能解决你的问题,请参考以下文章