ajax常见错误和使用总结

举报
chenyu 发表于 2021/07/26 23:45:13 2021/07/26
【摘要】 先给出标准的js时间ajax   <script type="txt/javascript"> //1、在IE中实例化Msxml2.XMLHTTP对象 Msxml2.XMLHTTP是IE浏览器的内置对象,该对象具有异步提交数据和获取结果的功能 var xmlHttp=false;function initAJAX(){ if(window....

先给出标准的js时间ajax

 


  
  1. <script type="txt/javascript">
  2. //1、在IE中实例化Msxml2.XMLHTTP对象 Msxml2.XMLHTTP是IE浏览器的内置对象,该对象具有异步提交数据和获取结果的功能
  3. var xmlHttp=false;
  4. function initAJAX()
  5. {
  6. if(window.XMLHttpRequset)
  7. {
  8. xmlHttp=new XMLHttpRequest();
  9. }
  10. else if(window.ActiveXObject)
  11.    {
  12. try {
  13. xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  14. }
  15. catch(e){
  16. try{
  17. xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  18. }
  19. catch(e)
  20. {
  21. window.alert("该浏览器不支持AJAX");
  22. }
  23. }
  24. }
  25. }
  26. //2、指定异步提交的目标和提交方式,调用xmlHttp的open方法true 表示异步请求
  27. xmlhttp.open("get","info.jsp","true");
  28. //3、指定当xmlHttp状态改变时,需要进行处理
  29. //xmlHttp的状态不断变化,其状态保存在xmlHttp的readyState属性中,用xmlHttp.readyState表示,常见readyState属性如下
  30. //0:为初始化状态,对象以创建,尚未调用open()
  31. //1:已初始化状态,调用open()方法以后
  32. //2:发送数据状态,调用send()方法以后
  33. //3:数据传送状态,已经接受到部分数据,但接受尚未完成
  34. //4:完成状态,数据全部接受完成
  35. xmlHttp.onreadystatechange=function()
  36. {
  37. //处理代码
  38. if(xmlHttp.readyState==4
  39. {
  40. infoDiv.innerHTML=xmlHttp.responseText;
  41. }
  42. }
  43. //还可以infoDiv.innerText中,xmlHttp.responseText表示目标文件得到的输出的文本内容,xmlHttp.responseXml表示提交目标得到的xml格式的数据,
  44. //或者xmlHtttp.onreadyStatechange=handle;
  45. function handle()
  46. {
  47. //处理代码
  48. }
  49. //调用xmlHttp的send函数 如果请求方法是get的话,send可以没有参数,或者参数是null,如果请求方式的post,可以将需要传送的内容传入send函数中以字符串的形式发出,及时是post
  50. //即使是post提交方式send函数还是可以将参数置空,可以将参数放在url后面进行请求。
  51. xmlhttp.send();
  52. </script>


然后我们一般用jquery实现比较多点,这样避免了浏览器不兼容

 

 


  
  1. $.ajax({
  2. type: "POST",
  3. contentType: "application/json",
  4. url: "WS_Page.asmx/InitList",
  5. data: "{id:'" + $("#txtId").val() + "',url:'" + $("#txtUrl").val() + "',ip:'" + $("#txtIp").val() + "'}",
  6. datatype: 'json',
  7. cache: false,
  8. success: function(json) {
  9. var objlist = eval(json.d);
  10. $.each(objlist, function(n, obj) {
  11. strhtml += "<tr >";
  12. strhtml += "<td>";
  13. strhtml += obj.id;
  14. strhtml += "</td>";
  15. strhtml += "<td>";
  16. strhtml += obj.url;
  17. strhtml += "</td";
  18. strhtml += "<td>";
  19. strhtml += obj.ip;
  20. strhtml += "</td>";
  21. strhtml += "<td>";
  22. strhtml += obj.updatetime;
  23. strhtml += "</td>";
  24. strhtml += "<td>";
  25. strhtml += "<input type='button' value='编辑'onclick='javascript:location.href=\"Manager.aspx?id=" + obj.id + "\"'/>  ";
  26. strhtml += "<input type='button' value='删除'onclick='deleteInfo(" + obj.id + ")'/>";
  27. strhtml += "</td>";
  28. strhtml += "</tr>";
  29. })
  30. $("#liststr").append(strhtml);
  31. },
  32. error: function(err) {
  33. alert(err.responseText);
  34. }
  35. });

当然我们也可以用for循环,但是这个时候的话

 success: function(json){for(var i=0;i<json.length;i++){json.name}} 
 

这样写是错的啊,切记,得不到数据的,忘记了写坐标,下面是对的。

 

 

 success: function(json){for(var i=0;i<json.length;i++){json[i].name}} 
 

 

 

不知道大家看到过jquery API 没有 

 

$.ajax()
 

 

返回的是xmlRequest对象,已经封装好了,如我们想通过验证 return false 或者 return true 是得不到结果值的,这个原因我看了API才知道

 

比如:


  
  1. $.ajax({
  2. type: "POST",
  3. contentType: "application/json",
  4. url: "WS_Page.asmx/InitList",
  5. data: "{id:'" + $("#txtId").val() + "',url:'" + $("#txtUrl").val() + "',ip:'" + $("#txtIp").val() + "'}",
  6. datatype: 'json',
  7. cache: false,
  8. success: function(json) {
  9. return false;
  10. },
  11. error: function(err) {
  12. alert(err.responseText);
  13. }
  14. });

这样写就错了 因为不会返回 false 可以这么写

 

 


  
  1. var boo=true;
  2. $.ajax({
  3. type: "POST",
  4. contentType: "application/json",
  5. url: "WS_Page.asmx/InitList",
  6. data: "{id:'" + $("#txtId").val() + "',url:'" + $("#txtUrl").val() + "',ip:'" + $("#txtIp").val() + "'}",
  7. datatype: 'json',
  8. cache: false,
  9. success: function(json) {
  10. boo=false;
  11. },
  12. error: function(err) {
  13. alert(err.responseText);
  14. }
  15. });


我们拿到boo的值就可以操作我们相关的函数了。

 

还有拼接字符串的时候

url:'" + $("#txtUrl").val() + "',ip:'" + $("#txtIp").val() + "'}",
 

 

一定要记得加单引号,切记。

 

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/47780267

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。