为了账号安全,请及时绑定邮箱和手机立即绑定

关于ajax 传值为什么一直输出的是error函数中的值?

关于ajax 传值为什么一直输出的是error函数中的值?

噜噜哒 2018-08-02 13:10:56
$(function(){            var str="0";            setInterval(function(){                $.ajax({                    url : 'action.php',                    type:'post',                    data:str,                    success:function(data){                        console.log(data);                    },                    error:function(){                        console.log(3);                    },                    dataType:'json'                });            },3000);        });页面小工具中检查一直输出 3 ,从不输出data ,这是为什么?补充:后台是 <?php     $str=123;     return $str;
查看完整描述

1 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

1. dataType错误

 

   类型错误:后台返回的dataType类型和前台写的不一致会跳入error

 

   格式错误:jquery1.4之后对json的格式要求非常严格,json格式错误也会跳入error.{"test":1} 注意格式

 

  有时,在不需要返回值的情况下,扔按模板格式,设置了dataType:"json",参数;这时候,ajax传值正确时,出现200返回成功状态下报错的特殊情况。

 

2. async请求同步异步问题

 

    async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false

 

    例如,你用post请求传值到另一个页面后台,但是页面一加载你的ajax就已经执行过了,传值接收是在后台才完成的,这时候就请求不到数据,所以可以考虑把ajax请求改为同步试试。

 

3. data不能不写

 

   data为空也一定要传"{}";不然返回的是xml格式的。并提示parsererror. data:"{}"

 

   parsererror的异常和Header 类型也有关系。及编码header('Content-type: text/html; charset=utf8');

 

4. 传递的参数

 

    必须是ajax支持的编码格式

 

5. URL路径问题

 

    路径不能有中文


查看完整回答
反对 回复 2018-08-20
  • 1 回答
  • 0 关注
  • 1014 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信