|  |      1WarWithinMe      2012-03-05 16:42:35 +08:00 https的关系? | 
|  |      2YFZZ OP PRO @WarWithinMe 不清楚,但应该不是。我在本地调试的,请求的文件也是放在本地来进行简单的模拟。 | 
|  |      3guoquan      2012-03-05 16:50:07 +08:00 弄个本地服务器试试,浏览器的安全策略可能会阻止一些xhr请求 | 
|  |      4WarWithinMe      2012-03-05 16:57:00 +08:00 调试一下发现 var matches = request.responseText.match(/<article>([\s\S]+)<\/article>/); if(matches.length > 0) 这里是错的。。 应该要检查matches是否为null,而不是直接检查它的长度。 当没有匹配时,matches为null | 
|  |      5YFZZ OP PRO @guoquan 本地架上IIS,然后通过http://localhost/访问,并且把请求类型改为“get”。这样就好了……但是为什么要改成get? | 
|  |      6cougar      2012-03-05 17:23:08 +08:00 需要搭建本地环境localhost访问,不然在52行处会报错“拒绝访问” | 
|  |      7cougar      2012-03-05 17:23:56 +08:00 post也是可以的 | 
|  |      9YFZZ OP PRO @cougar 用post在火狐下,按照我的代码中“theTarget.innerHTML = "<p>" + request.statusText + "</p>";”会提示“Method Not Allowed”。 | 
|  |      10YFZZ OP PRO 用post传输,在火狐下“request.status”的状态是“405”。 | 
|  |      11soulteary      2012-03-05 17:30:20 +08:00 @xhslyf win下,百度一下,xmapp(lamp for win),简单好用。 或许你设置一下本地安全设置,就不会出错了... | 
|  |      12chone      2012-03-05 17:31:30 +08:00 代码中有一个最基本的错误。 contact.html 页面里的表单是一个基本的html form 并且action属性已经指向 submit.html。虽然在代码里有给它绑定了onsubmit的事件用以发起ajax,但是里面并没有prevent掉form的默认动作,所以提交后页面要以默认方式转入到submit.html,根本看不到ajax的效果。 //需要加入阻止默认事件的代码先 whichForm.onsubmit = function(e){ var event = e || window.event; // if (event.preventDefault) { event.preventDefault(); } // IE event.returnValue = false; // IE ... }; 另外ajax不能跨域访问,所以需要在本地建立一个服务器来运行这段内容(当然上传到某个服务器也可以)。lz应该先把这两部分做了。 | 
|  |      13keakon      2012-03-05 17:32:45 +08:00 405说明你在服务器端没有实现这个方法(即post)⋯⋯ | 
|  |      14cougar      2012-03-05 17:34:20 +08:00 12楼很全了 | 
|  |      15YFZZ OP PRO | 
|  |      16keakon      2012-03-05 20:09:56 +08:00 @xhslyf 原理细说起来很麻烦,最好自己看看资料。 简单来说,浏览器访问一个URL时,会根据不同的方法(GET、POST等)来构造不同的数据。在服务器端则需要区分这些方法,根据你的逻辑做出不同的处理。 我不知道你的服务器端用的什么语言,如果只是静态的HTML,那么web服务器一般只会处理GET方法,其他方法则返回405错误代码,表示这个方法不可用。这就好像网页不存在时返回404一样。 至于权限问题,很多浏览器对本地网页有限制,不允许路径为file:///...的AJAX请求,必须放在服务器上。 | 
|  |      17Mutoo      2012-03-05 20:23:08 +08:00 要搭建本地服务器(localhost)才可以。直接双击打开网页的话,ajax脚本无法通过一些浏览器的安全沙箱,因为如果有人构造恶意的脚本的话可能会把你电脑里的私人文件给post出去,这样很危险。 |