2 u011218527 u011218527 于 2016.02.17 17:44 提问

Ajax+nodejs新手求问!

我有一个页面A,其中通过iframe加载了一个页面B。页面B里有个表单,表单里有个submit按钮。我在这个B页面的js中为这个submit按钮添加了一个事件函数。在这个事件函数中我创建了一个XMLHttpRequest实例xhr1。然后后台我用nodejs接收提交的表单数据并发送响应内容。我想让响应内容出现在父页面A的特定位置上。

现在数据接收、发送响应内容都没有问题,问题是响应的内容不能出现在A页面特定位置上。
我xhr1的onreadystatechange事件函数为

 xhr1.onreadystatechange=function(){
     if (xhr1.readyState==4) {
        if ((xhr1.status>=200&&htr1.status<300)||xhr1.status==304) {
                    window.parent.document.getElementById("regi").innerHTML=xhr1.responseText;

        }
        else{
            window.parent.document.getElementById("regi").innerHTML="Unsuccessfull: ";

        }

    }
 }

regi是父页面A中的一个元素的id。
可是,这样写的结果是父页面A的regi元素内容并没有变为xhr1.responseText的内容,xhr1.responseText居然写在了页面B里。请问是哪里出问题了?怎样才能实现我想要的效果?
非常感谢!!

1个回答

showbo
showbo   Ds   Rxr 2016.02.17 17:55
已采纳

你那个按钮时提交表单了吧,都没有执行你 xhr1.onreadystatechange的转换函数,要return false阻止表单提交,或者按钮改为button,不要submit

 <input type="submit" onclick="yourfunction();return false;"/>
u011218527
u011218527 回复无聊码农: 谢谢!!确实如您指出的这样——根本就没有执行转换函数,而是执行的默认行为。不过,我的问题不是没有阻止表单提交,而是在那之前第一步按钮的onclick事件都没有绑定成功。。。我是通过一步一步加alert检查出来的。不过,我到现在也没弄清楚为什么之前onclick事件都没有绑定成功,我就重写了一遍就可以了。非常感谢您指出问题!!
接近 2 年之前 回复
u011218527
u011218527 回复无聊码农: 谢谢!!确实如您指出的这样——根本就没有执行转换函数,而是执行的默认行为。不过,我的问题不是没有阻止表单提交,而是在那之前第一步按钮的onclick事件都没有绑定成功。。。我是通过一步一步加alert检查出来的。不过,我到现在也没弄清楚为什么之前onclick事件都没有绑定成功,我就重写了一遍就可以了。非常感谢您指出问题!!
接近 2 年之前 回复
showbo
showbo 回复阿琛Bonnie: 改button就好了,submit的话自己注意阻止表单提交了,方法已经给你了。注意不能跨域
接近 2 年之前 回复
u011218527
u011218527 回复无聊码农: 嗯嗯,是的。这个浏览器兼容问题我后面再完善。我现在用的Chrome呀,应该没问题啊。。。
接近 2 年之前 回复
showbo
showbo IE8-要设置returnValue=false
接近 2 年之前 回复
showbo
showbo 回复阿琛Bonnie: <input type="submit" onclick="event.returnValue = false; event.preventDefault&&event.preventDefault();" />
接近 2 年之前 回复
showbo
showbo 回复阿琛Bonnie: preventDefault标准浏览器的方法,IE8-不支持
接近 2 年之前 回复
showbo
showbo 回复阿琛Bonnie: 事件怎么绑定的?自己增加alert语句看看就知道了
接近 2 年之前 回复
u011218527
u011218527 没有,我在Button的onclick事件函数的第一行就写了 e.preventDefault()。所以后面的应该都执行了吧。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!