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

$(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;


噜噜哒
浏览 1017回答 1
1回答

红颜莎娜

1. dataType错误&nbsp;&nbsp; &nbsp;类型错误:后台返回的dataType类型和前台写的不一致会跳入error&nbsp;&nbsp; &nbsp;格式错误:jquery1.4之后对json的格式要求非常严格,json格式错误也会跳入error.{"test":1} 注意格式&nbsp;&nbsp; 有时,在不需要返回值的情况下,扔按模板格式,设置了dataType:"json",参数;这时候,ajax传值正确时,出现200返回成功状态下报错的特殊情况。&nbsp;2. async请求同步异步问题&nbsp;&nbsp; &nbsp; async默认是true(异步请求),如果想一个Ajax执行完后再执行另一个Ajax, 需要把async=false&nbsp;&nbsp; &nbsp; 例如,你用post请求传值到另一个页面后台,但是页面一加载你的ajax就已经执行过了,传值接收是在后台才完成的,这时候就请求不到数据,所以可以考虑把ajax请求改为同步试试。&nbsp;3. data不能不写&nbsp;&nbsp; &nbsp;data为空也一定要传"{}";不然返回的是xml格式的。并提示parsererror. data:"{}"&nbsp;&nbsp; &nbsp;parsererror的异常和Header 类型也有关系。及编码header('Content-type: text/html; charset=utf8');&nbsp;4. 传递的参数&nbsp;&nbsp; &nbsp; 必须是ajax支持的编码格式&nbsp;5. URL路径问题&nbsp;&nbsp; &nbsp; 路径不能有中文
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery