后端图片上传成功,但是ajax 返回走error readyState=4 status=200;

3 篇文章 0 订阅

前端js代码:

if ($("#file").val() == '') {
                return;
        }
        var formData = new FormData($("#uploadForm")[0])
        console.log(formData)
        formData.append('photo', $('#upload')[0].files[0]);
     $.ajax({
             url:xyt+'upload.php?method=addImg',
             type: "post",
             data: formData,
             cache: false,
             dataType:'json',
             contentType: false,
             processData: false,
             success: function(data){
                console.log(data);
                if (data.status === 3) {
                    localStorage.setItem('toux_img',data.url)
                    console.log(data.url)
                } else if (data.status === 4) {
                    alert('上传失败网络错误,请重新上传');
                } else if (data.status === 6) {
                    alert('上传方式错误');
                } else if (data.status === 1) {
                    alert('格式错误')
                } else if (data.status === 2) {
                    alert('图片过大')
                }
            },
            error:function(response){
                    console.log(response);
            }
     });

返回值:

{"readyState":4,"responseText":"adsfasdf","status":200,"statusText":"parsererror"}

很奇怪对不对,status=200表明远端处理是成功的,问题出在前端解析上了。dataType的可设置范围如下:

"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 "cache" 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串
 

说明:

后端返回实际是做了json处理的,dataType 类型不论是修改为 json\text 还是默认不写,都无法正常返回,最终在js里面将返回的内容又转了一次json  ,问题解决

补充:js中将字符串转化成json对象的常见三种方法:


var data='[{"name":"xiao","age":12},{"name":"xiao","age":12}]';
//方式一
var json1 = JSON.parse(data);
dy(":"+json1[0].name);
//方式二
var json2 = eval("(" + data+ ")");
dy(json2[0].name);
//方式三
var json3 = (new Function("return " + data))();

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值