关于ajax更改xml的问题,请求帮助
描述:我用ajax去更改xml文档的内容,html页面上提示更新成功了,但是在同一个文件夹(wwwroot)下面的xml没有被更改,,,我百度查了下,有人说,更改xml文档,这个xml不能在服务器端里面,需要在客户端,可是我把下面的带面里面xmlhttp.open("GET","book.xml",false);改成我E盘中xml如xmlhttp.open("GET","E:\book.xml",false);结果连找xml的信息都不行了。原来把xml和html同放在wwwroot里还可以搜索xml的信息
问题:能否不用php和asp等,,直接只使用ajax就可以修改xml文档的内容,如果可以,那么这个xml是必须客户端才可以吗? 如果只有客户端可以,那么如果去找这个文件,直接xmlhttp.open("GET","E:\book.xml",false)用了,不可以。。。麻烦大神们解答一下。
javascript中ajax代码如下。
<script>
function k()
{
if(window.XMLHttpRequest)
{
var xmlhttp=new XMLHttpRequest();
}
else
{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
xmlhttp.open("GET","book.xml",false);
xmlhttp.send();
xmldoc=xmlhttp.responseXML;
var ne=xmldoc.createElement("kog");
var nt=xmldoc.createTextNode("kkkkk");
ne.appendChild(nt);
x=xmlDoc.getElementsByTagName("book")[0];
x.appendChild(ne);
document.getElementById("div").innerHTML=xmldoc.getElementsByTagName("book")[0].childNodes[1].childNodes[0].nodeValue;
}
</script>
xml代码如下,,
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="cooking">abcde
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">abcde
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</bookstore>
------解决方案--------------------肯定不行。。需要搭建服务器通过动态页的io来写xml文件
如果你用IE6-可以用fso来读写客户端硬盘文件,不过还是需要设置系统,具体怎么搞忘记了
------解决方案--------------------Ajax是一种客户端浏览器和服务器之间的数据交互方法,和传统的交互方法最大的区别就是实现不刷新页面。
如果要要修改XML文件的内容,那肯定是在服务器上保存才有意义,必须用ASP或PHP或JSP等在服务器端运行的服务来实现,用文件处理的方法,fileopen、filesave之类的。
客户端浏览器发出请求,服务器端相应,在服务器上做相应的操作,读写数据库,或读写服务器本地文件。
xmlhttp.open("GET","E:\book.xml",false)这种代码是在javascript上运行的,如果你的网站上的js代码中写上这种命令,是不能执行的,即使能执行也是没有意义的,不是每个人的计算机上都有E:\bool.xml这个文件,而且浏览器本身的安全策略也不允许你用js读取本地文件(除非只在本地运行),如果这种代码浏览器能运行了,那你一访问我的网站,我的js代码就读取上传你的本地文件,还有什么安全可言。(以前可以用ocx控件在IE上实现这种功能,但现在越来越难了,360和新版的IE浏览器都拒绝这么做,主要还是安全问题)
这么的可以执行 xmlhttp.open("GET","dir/a.xml",false),读取你服务器路径下的文件,读取是可以的,写入要通过服务器端的应用来实现。
但脚本中写xmlhttp.open("GET","http://www.baidu.com",false)是不行的,有跨域问题,IE上会报错:没有权限。