Ajax无刷新技术的踩坑点

323 阅读1分钟

一、常见报错

1、 404错误,网页代码错误。问题可能是:

  • 单词没有拼写对、
  • 流程语句逻辑有问题、
  • 路径有问题。

2、 500错误,后台代码错误。问题可能是:

  • 实体类和数据库表单字段属性不对应、
  • sql语句传输错误(少“ ' ”符号,或者“ ,”符号,或者语句关键词打错)。
  • $.ajax函数里,注意url,type,data,dataType的大小写规范,dataType!!注意

3、EF外键引起的序列化问题

经过反复的查阅,发现问题出在序列化时,由于D层一个表和另一个表示一对多关系,当序列化表1的时候,会找到和另一个表2关联的字段,就会到另一个表2中序列化,然后另一个表2也有一个字段和表1相关联,所以序列化发生错误。

二、在登录验证时的传参问题

1、关于汉字的编码解码escape 与 unescape的使用

  • escape
var name1 = escape(name);//对文字经行编码
location.href="1.html?name="+name1;//传输编码后的文字
  • unescape
 var name = location.search;//获取要检测的字符串
 var name1 = name.substr(string.indexof('=')+1);//截取=号下一个 下标的字符串
 var name2 = unescape(name1);//解码

三、反序列化碰到的问题

1、jQurey选择器中,使用属性选择器时,$("input[type='checkbox']"),input后面不能有空格,否则会被当成后代选择器

2、在传对象时

  • 数组要ToString()转换为字符串;
  • data里json对象要JSON.stringify(obj)转化为字符串

四、全球唯一标识符问题

1、需要转义字符\'来转义单引号

  • 单删时:不转义没法给事件传参,但是接受到的是没有‘’的字符串,让新的变量接受到的是带引号的全球唯一标识符
'<td><input id="Button1" type="button" value="删除"  onclick="del(\'' + this.id + '\')" /></td>''
    var id = "\'" + id + "\'";

  • 批删时:用数组来存值,转字符串时,会自动有,号隔开,而且id来自chexcbox的value,由于不是给事件传参,所以得到的是带‘’的字符串
 '<td><input name="ck" type ="checkbox" value="\''+ this.id+'\'"/>  </td>'

五、数据库数据类型

当功能完成后,数据的类型也要改变,bit,datetime比nvachar节省了很多字节,在性能上要提升很多。