IE8下$.ajax ajax获取后端数据不到数据直接进error里面了,在IE10,谷歌可以正常显示,求大神们指教

&>&解决ajaxfileupload中ie9、ie10兼容的问题
解决ajaxfileupload中ie9、ie10兼容的问题
上传大小:7KB
这里解决了ajaxfileupload中ie9、ie10兼容的问题,下载下来直接可以使用
综合评分:4
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有38条
jQuery.handleError(s, xml, null, e);错误,求解释
不错,可以解决问题,感谢分享
试过了可以用,谢谢分享。。
VIP会员动态
热门资源标签
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
解决ajaxfileupload中ie9、ie10兼容的问题
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
解决ajaxfileupload中ie9、ie10兼容的问题http://guying1028.iteye.com/blog/1958715
bootstrap导航菜单在ie8下不能正常显示问题解决:
在你的html静态页面头部加上:
&meta http-equiv="X-UA-Compatible" content="IE=edge"&
&!--[if lt IE 9]&
&script src="https://oss.maxcdn.com/libs/html5shiv/3.6.2/html5shiv.js"&&/script&
&script src="js/respond.src.js"&&/script&
&![endif]--&
同时,不要在本地看效果,放到服务器端看效果,原因如下(官网):
Respond.js works by requesting a pristine copy of your CSS via AJAX, so if you host your stylesheets on a CDN (or a subdomain), you'll need to upload a proxy page to enable cross-domain communication.
google翻译如下:
Respond.js 是通过请求原始副本你的CSS通过AJAX,所以如果你主机您的样式表在一个CDN(或子域),你需要上传一个代理页面启用跨域通信。
所以想兼容ie,不引用恐怕是不行的。
必须在服务器下运行
bootstrap-select样式不显示问题解决
IE8不显示字体图标
Bootstrap轮播图不兼容IE的问题
ie8下bootstrap3的Glyphicons图标不显示问题
BootStrap中小图标在web项目中不能正常显示
bootstrap glyphicons 不显示
bootstrap的栅格布局不支持IE8该如何解决?
bootstrap-datetimepicker.js的兼容性问题(IE10兼容模式无法弹出窗口)
解决Bootstrap不兼容IE8及以下版本的问题
【Bootstrap】导航栏navbar在IE8上的缺陷与解决方案
没有更多推荐了,如何解决“文件上传返回JSON数据,在IE下提示下载文件”的问题?
<a data-traceid="question_detail_above_text_l&&
UploadServlet.java
@WebServlet(&/upload.do&)
@MultipartConfig
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取文件路径
String filePath = WebUtil.getFilePath(request, &files&);
// 获取文件名
Part part = request.getPart(&file&);
String fileName = WebUtil.getFileName(request, part);
// 写入文件
part.write(filePath + &/& + fileName);
// 返回结果
Map&String, Object& data = new HashMap&String, Object&();
data.put(&fileName&, fileName);
data.put(&fileType&, part.getContentType());
data.put(&fileSize&, part.getSize());
WebUtil.writeJson(response, data);
upload.html
&form id=&login_form& action=&/upload.do& method=&post& enctype=&multipart/form-data&&
&label for=&file&&File:&/label&
&input type=&file& id=&file& name=&file&/&
&button type=&submit&&Upload&/button&
&div id=&console&&&/div&
$(function() {
& & $('#login_form').ajaxForm({
& & & & beforeSubmit: function() {
& & & & & & if ($('#file').val() == '') {
& & & & & & & & alert('Please choose a file!');
& & & & & & & &
& & & & & & }
& & & & },
& & & & success: function(json) {
& & & & & & if (json) {
& & & & & & & & var html = '';
& & & & & & & & html += '&p&File Name: ' + json.fileName + '&/p&';
& & & & & & & & html += '&p&File Type: ' + json.fileType + '&/p&';
& & & & & & & & html += '&p&File Size: ' + json.fileSize + '&/p&';
& & & & & & & & $('#console').html(html);
& & & & & & }
在Chrome、Firefox上运行正常,在IE8+中运行时,提示下载,如下图:
'Content-Type:text/ charset=utf-8'
--- 共有 3 条评论 ---
: JSON.parse()在IE9下也不支持,在$.ajax中添加dataType:"json",能够自动解析json
刚刚发现,IE10可以支持application/json格式的Response了,也就是说低于IE10版本一下的IE浏览器都需要使用text/html格式的Response。
在Response头中指定Content-Type为text/html,而并非text/html,是可以解决问题的。这样返回给客户端的是一个JSON字符串(并非JSON对象),无需IE来解析。随后,使用JSON.parse()函数将JSON字符串解析为JSON对象即可。非常感谢你的回答!
但客户端JS代码有些不够优雅,能否通过统一的方式来设置呢?
ajaxForm不是jQuery自带的吧,是一种表单插件?
--- 共有 1 条评论 ---
由于jQuery的Ajax函数很难实现文件上传功能,所以我选择了一款比较流行的jQuery插件--jQuery Form。官网:http://www.malsup.com/jquery/form/#getting-started
百度了下,应该是没加dataType:
期望返回的数据类型。null、“xml”、“script”或者“json”其中之一。dataType提供一种方法,它规定了怎样处理服务器的响应。这个被直接地反映到jQuery.httpData方法中去。下面的值被支持:
'xml':如果dataType == 'xml',将把服务器响应作为XML来对待。同时,如果“success”回调方法被指定, 将传回responseXML值。
'json':如果dataType == 'json', 服务器响应将被求值,并传递到“success”回调方法,如果它被指定的话。
'script':如果dataType == 'script', 服务器响应将求值成纯文本。
默认值:null(服务器返回responseText值)
--- 共有 4 条评论 ---
就算在ajaxForm中指定了dataType为json,还是解决不了此问题,在IE下仍然出现下载提示框。下载后发现就是从服务端返回的JSON数据,这说明IE并没有对JSON数据进行解析。
: 只要有助于解决问题就可取,转载不注明出处,有大环境的原因。
不要发这个垃圾网站的链接,所有文章都是转别人的,而且不注明出处!
http://www.open-open.com/lib/view/open7.html
response.setContentType(&application/charset=UTF-8&);
--- 共有 2 条评论 ---
: 关键是application/json
指定了charset=UTF-8也不能解决问题,这好像并非是字符集的问题。
我研究过jQuery Form插件的官网,有关文件上传的问题,作者是这样描述的。
To account for the challenges of script and JSON responses when using the iframe mode, the Form Plugin allows these responses to be embedded in a textarea element and it is recommended that you do so for these response types when used in conjuction with file uploads and older browsers.
他用一个&textarea&HTML标签来封装需要返回的JSON数据,我个人认为此方案不够优雅,倒不如直接返回JSON字符串(text/html格式),然后再通过JSON.parse()解析为JSON对象来得痛快。大家认为呢?
最后,还是用代码来说明一下此问题是如何解决的吧。
Upload.java
@WebServlet(&/upload.do&)
@MultipartConfig
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取文件路径
String filePath = WebUtil.getFilePath(request, &files&);
// 获取文件名
Part part = request.getPart(&file&);
String fileName = WebUtil.getFileName(request, part);
// 写入文件
part.write(filePath + &/& + fileName);
// 返回结果
Map&String, Object& data = new HashMap&String, Object&();
data.put(&fileName&, fileName);
data.put(&fileType&, part.getContentType());
data.put(&fileSize&, part.getSize());
WebUtil.writeJson(response, data);
WebUtil.writeHtml(response, data); // 返回text/html格式的数据
$(function() {
$('#login_form').ajaxForm({
beforeSubmit: function() {
if ($('#file').val() == '') {
alert('Please choose a file!');
success: function(json) {
json = JSON.parse(json); // 将JSON字符串解析为JSON对象
if (json) {
var html = '';
html += '&p&File Name: ' + json.fileName + '&/p&';
html += '&p&File Type: ' + json.fileType + '&/p&';
html += '&p&File Size: ' + json.fileSize + '&/p&';
$('#console').html(html);一、问题重现
本地的脚本请求测试环境的接口
type: GET,
data: data,
(data) { **** }
在chrome、Firefox和IE9以上的都正常发送请求,IE10以下没有发送请求。
二、解决思路
$.ajax()中把错误信息显示出来
type: GET,
data: data,
(data) { **** }
(a, b, c) {alert(c);}
三、原来是 No Transport错误
网上说是涉及到跨站脚本攻击,所以不让提交。
在$.ajax()前加上下面这句话(jQuery.support.cors =),这是对cors协议的一种实现,CORS是W3C中额度一项新特性,能让jQuery支持跨域请求。
jQuery.support.cors =
type: GET,
data: data,
(data) { **** }
注意:实际开发环境中是不可以加上jQuery.support.cors =这句话的。
其实JQuery已经提供了专门的方法支持跨域请求,比如jsonp等,但这只是一个测试环境,真实环境并没有出现这个问题。专门讲解决跨域问题,那就是另外一个话题了。
IE浏览器下,ajax访问不生效或返回“No Transport”的问题
IE11 下ajax需要注意事情
IE10下, 调用ajax问题
解决jquery ajax在跨域访问post请求的时候,ie9以下无效(包括ie9)的问题
没有更多推荐了,jquery ajax请求,Google Chrome、Firefox、IE10以及IE10以上正常,IE10以下跨域问题报如下错误提示:{"readyState":0,"status":0,"statusText":"No Transport"}-error-No Transport,
解决方案:
给ajax请求的头部设 jQuery.support.cors =
代码如下:
owner.login = function(loginInfo, callback) {
jQuery.support.cors =
$.ajax(config.getUrl("/login/doLogin"), {
mobile: loginInfo.mobile,
password: loginInfo.password,
keepLogin: loginInfo.keepLogin,
role: loginInfo.role,
dataType: 'json', //服务器返回json格式数据
type: 'post', //HTTP请求类型
crossDomain: true,
async:false,
cache: false,
timeout: config.options.timeout, //超时时间设置为60秒;
success: function(data) {
callback(data);
error: function(xhr, type, errorThrown) {
console.log(JSON.stringify(xhr) + "-" + type + "-" + errorThrown);
扫码向博主提问
非学,无以致疑;非问,无以广识
没有更多推荐了,

我要回帖

更多关于 ajax怎么获取json数据 的文章

 

随机推荐