真实悲啊。多年没有这么麻烦的解决问题了。
**特别说明:操作中写出了使用的软件和环境,就是为了坑满地啊,真的不知道该相信谁了。
工作流程:
1.源头是别人编辑的excel数据;
2.用c#操作整理后添加到mysql中;
3.php读取数据,输出到javascript中用数组操作,显示到Web地图上。
开始的几个excel文件没有问题,结果最后1个就是不显示,还影响了其他数据。
初步判断:数据内容有问题,影响了javascript造成处理中断,后续代码不执行。
其实这个判断是正确的,问题是就是没有发现数据有什么问题。
1.看excel内容,没有问题;
2.看c#操作时候的预览显示,没有问题;
3.看mysql中数据表,没有问题;甚至用sql查询浏览,没有问题;
4.360极速浏览器看源代码,没有问题;
此时虽然不知道代码具体的中断位置,不过根据直觉,应该是数据赋值时候中断的,大概是如此格式:
var ptsx06=new Array();
var ptsy06=new Array();
var ptxts06=new Array();
ptsx06[0]=103.01;
ptsy06[0]=29.76;
ptxts06[0]='LMS01';
ptsx06[1]=103.01;
ptsy06[1]=29.81;
ptxts06[1]='LMS02';
...
不过又发现,并不是所有的数据都会引起问题,开始一部分没有问题,到某一部分出现问题。
根据数据内容看,应该是不同的数据合并到此excel中的。
于是测试:
逐渐减少excel数据,进行整个数据处理操作,在web中查看地图显示结果,以确定出现问题的数据反。
终于确定了范围。
但是根据前面列举的不同阶段和环境都对比其他正常数据,却没有发现不同。
太难了!太难了!真的太难了!
可生活还是要继续的。
尝试:
将excel数据复制,粘贴到windows记事本中,发现部分数据多了双引号,可是在excel中是看不到的。
例如:
"LMS01"
LMS02
对应javascript中的代码部分:
ptxts06[0]='LMS01';
而在代码是没有看到"的。
**注意:代码格式显示没有异常。
于是判断:问题出在此列。然后做了2个测试以确定:
1.将javascript赋值代码改变,直接设定为手工输入的内容,例如:
ptxts06[0]='x';
ptxts06[1]='x';
ptxts06[2]='x';
ptxts06[3]='x';
web地图显示正常了,当然显示的字符就是手输固定的了。
确定:问题就在此列上。
2.保留javascript的赋值模式,将mysql中的对应数据字段内容手工修改,全部设置为a。
web地图显示正常了。
确定:excel中数据的问题,已经传导到了mysql中,当然web页面也手影响了。
mysql中也是此列数据有问题。
**注意:mysql中的数据看起来也没有异常,其中也没有看到在字符串中有的"。
目前确定了问题数据列,但是不知道是什么问题。
还有就是进行了一些操作,就是无法消除",而且在excel中还不显示,复制到记事本就仍然在。
走投无路,到网络上搜索,看如何消除"。**其实没有什么用处,因为在mysql中并没有了。
但是要尽一切可能找到原因,并不是这次解决就完事了。
原因是:
以后会将C#程序提供给其他用户使用,而excel数据也是由其他用户编辑产生,并且由其添加到mysql中。
万一添加了有问题的数据,影响了web功能,甚至都不知道怎么确定存在问题的数据,那就瞎了。
网络上处理"的方法大概有2种:
1.复制到其他编辑器处理后复制回来。
2.好像有用户提到用clean,但是俺却不知道怎么用,excel不熟悉啊。
这些看着也没有什么兴趣,因为知道并不是"的问题,不过还得看。
问题来了,问题来了,在看的过程中,注意到了一句话,“消除软回车”。忽然亮了。
于是再看360极速浏览器中javascript代码,没有看到回车效果。过。
复制代码到NotePad++中,仍然没有看到回车效果。想看十六进制,结果命令找不到了。关。
复制代码到UltraEdit中,天啊,终于看到了回车。也就是如此:
ptxts06[0]='LMS01
';
ptxts06[1]='LMS02
';
这样就导致了javascript的出错中断。
看十六进制,是多了个0xOA,也就是\r。
终终于于找到了问题。
在C#中,对字符串进行了处理,处理了\r和\n。
成了。web地图显示正确。
后:虽然解决了问题很高兴。但是也感觉到花费几个小时解决这种问题,真的太浪费了。
**特别说明:操作中写出了使用的软件和环境,就是为了坑满地啊,真的不知道该相信谁了。
工作流程:
1.源头是别人编辑的excel数据;
2.用c#操作整理后添加到mysql中;
3.php读取数据,输出到javascript中用数组操作,显示到Web地图上。
开始的几个excel文件没有问题,结果最后1个就是不显示,还影响了其他数据。
初步判断:数据内容有问题,影响了javascript造成处理中断,后续代码不执行。
其实这个判断是正确的,问题是就是没有发现数据有什么问题。
1.看excel内容,没有问题;
2.看c#操作时候的预览显示,没有问题;
3.看mysql中数据表,没有问题;甚至用sql查询浏览,没有问题;
4.360极速浏览器看源代码,没有问题;
此时虽然不知道代码具体的中断位置,不过根据直觉,应该是数据赋值时候中断的,大概是如此格式:
var ptsx06=new Array();
var ptsy06=new Array();
var ptxts06=new Array();
ptsx06[0]=103.01;
ptsy06[0]=29.76;
ptxts06[0]='LMS01';
ptsx06[1]=103.01;
ptsy06[1]=29.81;
ptxts06[1]='LMS02';
...
不过又发现,并不是所有的数据都会引起问题,开始一部分没有问题,到某一部分出现问题。
根据数据内容看,应该是不同的数据合并到此excel中的。
于是测试:
逐渐减少excel数据,进行整个数据处理操作,在web中查看地图显示结果,以确定出现问题的数据反。
终于确定了范围。
但是根据前面列举的不同阶段和环境都对比其他正常数据,却没有发现不同。
太难了!太难了!真的太难了!
可生活还是要继续的。
尝试:
将excel数据复制,粘贴到windows记事本中,发现部分数据多了双引号,可是在excel中是看不到的。
例如:
"LMS01"
LMS02
对应javascript中的代码部分:
ptxts06[0]='LMS01';
而在代码是没有看到"的。
**注意:代码格式显示没有异常。
于是判断:问题出在此列。然后做了2个测试以确定:
1.将javascript赋值代码改变,直接设定为手工输入的内容,例如:
ptxts06[0]='x';
ptxts06[1]='x';
ptxts06[2]='x';
ptxts06[3]='x';
web地图显示正常了,当然显示的字符就是手输固定的了。
确定:问题就在此列上。
2.保留javascript的赋值模式,将mysql中的对应数据字段内容手工修改,全部设置为a。
web地图显示正常了。
确定:excel中数据的问题,已经传导到了mysql中,当然web页面也手影响了。
mysql中也是此列数据有问题。
**注意:mysql中的数据看起来也没有异常,其中也没有看到在字符串中有的"。
目前确定了问题数据列,但是不知道是什么问题。
还有就是进行了一些操作,就是无法消除",而且在excel中还不显示,复制到记事本就仍然在。
走投无路,到网络上搜索,看如何消除"。**其实没有什么用处,因为在mysql中并没有了。
但是要尽一切可能找到原因,并不是这次解决就完事了。
原因是:
以后会将C#程序提供给其他用户使用,而excel数据也是由其他用户编辑产生,并且由其添加到mysql中。
万一添加了有问题的数据,影响了web功能,甚至都不知道怎么确定存在问题的数据,那就瞎了。
网络上处理"的方法大概有2种:
1.复制到其他编辑器处理后复制回来。
2.好像有用户提到用clean,但是俺却不知道怎么用,excel不熟悉啊。
这些看着也没有什么兴趣,因为知道并不是"的问题,不过还得看。
问题来了,问题来了,在看的过程中,注意到了一句话,“消除软回车”。忽然亮了。
于是再看360极速浏览器中javascript代码,没有看到回车效果。过。
复制代码到NotePad++中,仍然没有看到回车效果。想看十六进制,结果命令找不到了。关。
复制代码到UltraEdit中,天啊,终于看到了回车。也就是如此:
ptxts06[0]='LMS01
';
ptxts06[1]='LMS02
';
这样就导致了javascript的出错中断。
看十六进制,是多了个0xOA,也就是\r。
终终于于找到了问题。
在C#中,对字符串进行了处理,处理了\r和\n。
成了。web地图显示正确。
后:虽然解决了问题很高兴。但是也感觉到花费几个小时解决这种问题,真的太浪费了。