Javascript ajax表单问题
我有以下代码,在每个浏览器中都可以使用,但IE除外。当点击表单的提交按钮时,IE根本没有响应 表单有以下值: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
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
这可能会解决你的IE问题。Hi all..我已经提出了建议的MOD,但IE仍然没有提交表单。我可以让其他浏览器正常工作。我在firebug中查看了代码,并尝试在IE中调试,但我看不到失败的地方..这几乎像是ajax没有初始化?没有初始化?无法创建一个XMLHTTP实例弹出窗口?是否显示状态警报?您测试了哪些IE版本?
for (var i = 0, len = sub.length; i < len; i++) {
if (sub[i].name) {
query.push(sub[i].name + '=' + encodeURIComponent(sub[i].value));
}
}