ajax表单问题IE
ajax form issue IE
我有以下的代码,在每个浏览器,但IE工作。当点击表单的提交按钮时,IE根本没有响应。
表单的值为:onsubmit="sendform(this);return false;"
<script type="text/javascript">
function makeRequest(url) {
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Giving up :( Cannot create an XMLHTTP instance');
return false;
}
http_request.onreadystatechange = function() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
alert(http_request.status);
//alert(http_request.responseText);
toggleDiv('stylized');
showtoggleDiv('success');
} else {
alert('There was a problem with the request.');
}
}
};
http_request.open('GET', url, true);
http_request.send(null);
}
function sendform(el) {
var sub = el.getElementsByTagName('input');
query = new Array();
for (i in sub) {
if (sub[i].name) {
query.push(sub[i].name + '=' + sub[i].value);
}
}
query = '?' + query.join('&');
makeRequest("http://markburnettinternational.com/sitelokpw/members/test.php" + query);
}
</script>
<script language="javascript">
function toggleDiv(divid) {
if (document.getElementById(divid).style.display == 'none') {
document.getElementById(divid).style.display = 'block';
} else {
document.getElementById(divid).style.display = 'none';
}
}
</script>
<script>
function showtoggleDiv(divid) {
document.getElementById(divid).style.display = 'block';
}
</script>
打开浏览器的调试器,并在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) {
第二,getElementsByTagName
返回NodeList
,这是一个类似数组的对象。永远不要使用for … in
循环遍历数组(类对象),始终使用普通的for
循环。
第三,始终使用encodeURIComponent
来正确编码查询参数:
for (var i = 0, len = sub.length; i < len; i++) {
if (sub[i].name) {
query.push(sub[i].name + '=' + encodeURIComponent(sub[i].value));
}
}
这个可能解决你的IE问题。
相关文章:
- 弯曲拐角IE 7,8问题
- jQuery AJAX 上传系统 IE 问题
- 从父页面调用iframe中的javascript,IE问题
- IE 8问题(使用js)
- Nic编辑新的上传IE问题
- 自定义模式脚本 - Safari 和 IE 问题
- JavaScript for .在循环 IE 问题中
- 使用 YQL 使用 jQuery 解析 XML(IE 问题)
- 输入类型提交的 IE 问题
- 液体布局IE问题,当然(新手)
- 在菜单上滚动交换类 - IE 问题
- jQuery预加载程序ie-6/7问题
- 重新初始化内联编辑器时的IE问题
- jQuery ie问题与粘贴(内容与中断)
- javascript IE问题.仅在IE中不工作
- selenium webdriver中的IE问题
- IE 7/8问题-无法获取属性'id': object的值为空或未定义
- 通过javascript从xml文件更新对象(IE问题)
- javascript背景大小和IE问题
- IE问题:可见