Javascript ajax表单问题

Javascript ajax表单问题,javascript,ajax,internet-explorer,forms,Javascript,Ajax,Internet Explorer,Forms,我有以下代码,在每个浏览器中都可以使用,但IE除外。当点击表单的提交按钮时,IE根本没有响应 表单有以下值:onsubmit=“sendform(this);return false;” 函数makeRequest(url){ var http_request=false; 如果(window.XMLHttpRequest){//Mozilla,Safari。。。 http_请求=新的XMLHttpRequest(); }如果(window.ActiveXObject){//IE 试一试{ h

我有以下代码,在每个浏览器中都可以使用,但IE除外。当点击表单的提交按钮时,IE根本没有响应

表单有以下值:
onsubmit=“sendform(this);return false;”


函数makeRequest(url){
var http_request=false;
如果(window.XMLHttpRequest){//Mozilla,Safari。。。
http_请求=新的XMLHttpRequest();
}如果(window.ActiveXObject){//IE
试一试{
http_请求=新的ActiveXObject(“Msxml2.XMLHTTP”);
}捕获(e){
试一试{
http_请求=新的ActiveXObject(“Microsoft.XMLHTTP”);
}捕获(e){}
}
}
如果(!http_请求){
警报(“放弃:(无法创建XMLHTTP实例”);
返回false;
}
http_request.onreadystatechange=函数(){
如果(http_request.readyState==4){
如果(http_request.status==200){
警报(http_请求状态);
//警报(http_request.responseText);
toggleDiv(“样式化”);
showtoglediv(“成功”);
}否则{
警报(“请求有问题”);
}
}
};
http_request.open('GET',url,true);
http_请求发送(空);
}
函数发送形式(el){
var sub=el.getElementsByTagName('input');
query=新数组();
(i在附属法例中){
if(sub[i].name){
push(sub[i].name+'='+sub[i].value);
}
}
query='?'+query.join('&');
makeRequest(“http://markburnettinternational.com/sitelokpw/members/test.php“+查询);
}
函数切换div(divid){
if(document.getElementById(divid.style.display=='none'){
document.getElementById(divid).style.display='block';
}否则{
document.getElementById(divid).style.display='none';
}
}
函数showtoglediv(divid){
document.getElementById(divid).style.display='block';
}

打开浏览器的调试器,在sendform()中放置一个断点,并仔细查看它,看看发生了什么。或者,打开javascript控制台可以为您提供有关发生了什么的重要反馈。

这段代码至少有三个问题:

var sub = el.getElementsByTagName('input');
query = new Array();
for (i in sub) {
    if (sub[i].name) {
        query.push(sub[i].name + '=' + sub[i].value);
    }
}
首先,始终使用
var
在本地范围内声明变量,因此使用

var query = new Array();
for (var i in sub) {
第二,返回一个
NodeList
,它是一个类似于数组的对象。在
循环中,永远不要使用
for…在数组(-like对象)上迭代,始终使用普通的
for
循环

第三,始终使用以正确编码查询参数:

for (var i = 0, len = sub.length; i < len; i++) {
    if (sub[i].name) {
        query.push(sub[i].name + '=' + encodeURIComponent(sub[i].value));
    }
}
for(变量i=0,len=sub.length;i