Ajax常见问题

来源:互联网 发布:天猫和淘宝质量一样吗 编辑:程序博客网 时间:2024/05/21 19:46

Ajax 向前台动态写入数据出错,建议使用x.html()追加,x.append()不建议使用。貌似append()追加时会自动补充标签完整:如x.append(“<tr><td>”);

在页面显示时会变成<tr><td></td></tr>,自动追加了</td></tr>。所以不建议使用,如果想使用,就这样用x.append(“<tr><td>xxxxx</td></tr>”)。

 

Ajax里面的页面加载数据:里面追加的字符串可以使用html转js字符串的工具

http://www.css88.com/tool/html2js/

js多余的字符不要选取,如[], .join();

如:<td>sssss</td>经过转换成"<td>sssss</td>",转换后可以直接插入字符串: s+="<td>sssss</td>";这样可以提高效率,和减少因拼写出错造成错误的情况。

 

 

想要对Ajax动态插入的标签进行操作。如果直接在Ajax方法后获取,会造成失败。例子:

     $.ajax( {

       type : 'POST',

       dataType : 'json', // json对象

       url : 'dingdan!tongji.action',

       data : null,

       success :function(response, status,xhr) {

           $.each(response,function(index, value) {

                            S+=”<div id=’test’>sss<div>”;

                         })

                        

             $(‘#test’).html();    

        

      

       },

       error : function() {

           alert("加载失败");

       }

 

    })

$(‘#test’).html();

 

红色的位置的语句无法获取到ajax动态加载的id为test的<div>,

绿色的位置可以。

大概原因可能是Ajax异步时的运作机制是激活Ajax方法时,会暂时先执行ajax方法后的其他方法红色部分,再返回执行ajax蓝色区域,所以如果在ajax方法后红色区域写获取ajax动态插入的标签会无效。

 

所以如果想要对ajax处理的数据进行操作,可以写在ajax方法的作用域(蓝色区域)里。

还有一种方法是加个参数:async:false,false代表只有在等待ajax执行完毕后才执行 $(‘#test’).html();    语句 ,这样也能成功获取标签。

Ajax中不执行success的原因:

当Datatype:json,1.4版本以后对返回的json格式很严格,所以注意返回的json格式符不符合,可以在浏览器控制台alert下返回json内容查看。

所以如果是这种错,就先针对数据传递是否错误:指定格式是否与数据格式相对应。

(Tips:在传递data的时候有两种方法:

1.    kv传值:

data : {

         'entity.id':id                 //kv传值

     },

 

2.    表单序列化:data:$("#searchform").serialize(),     

具体使用看情况。

页面报出uncaught exception: out of memory异常

当你的按钮是提交(sumbit)按钮,但是你又用到Ajax提交的话,火狐就会报出uncaughtexception: out of memory错误,并且点击按钮会一直刷新。直接把按钮改为button

两种页面加载数据的方法:

1、            前一个页面action传递后,当前页面使用struct接受显示。

设置<form action=” method=”post”>button使用submit

2、     利用ajax访问action,返回的json用于加载数据

Button使用button

0 0
原创粉丝点击