下面是我在主页面上的功能。这个代码在IE中运行正常,请检查我在哪里做错了
我只想将值传递给ajax页面,因为你可以看到我上面的链接。
function showUser2(str2)
{
if (str2=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
var drdownValue = document.getElementsByName('shorting').item(0).value;
var buttonValue1 = document.getElementsByName('buttonpassvalue1').item(0).value;
var value = parseInt(document.getElementById('count').value, 10);
value = isNaN(value) ? 0 : value;
value++;
document.getElementById('count').value = value;
var val123 = document.getElementById('count').value.trim();
var gotnumber = document.getElementById('getpagevalue').value.trim();
if(val123 > gotnumber){
buttonpassvalue1.setAttribute("disabled","disabled");
buttonpassvalue.removeAttribute("disabled");
} else{
buttonpassvalue.removeAttribute("disabled");
buttonpassvalue1.removeAttribute("disabled");
}
alert(drdownValue);// to check click and value
alert(buttonValue1);// to check click and value
xmlhttp.open("GET", "productlistajax.php?q=" + drdownValue + "&version1=" + buttonValue1, true);
xmlhttp.send();
}
按钮html代码
<button class="button" type="button" name="buttonpassvalue1" value="1" onclick="showUser2(this.value)">Next >> </button>
此代码在IE中运行正常,请检查我在哪里做错了
我只想将值传递给ajax页面,因为你可以看到我上面的链接。
感谢
答案 0 :(得分:2)
我建议使用jQuery或其他框架,它将始终了解所有特定于浏览器的东西。
如果您更喜欢使用本机代码,则需要一些额外的代码。首先,不要仅仅依赖ActiveXObject("Microsoft.XMLHTTP");
和XMLHttpRequest
,而这些可能并不总是可用。而不是那样,使用:
function GetXmlHttpObject(){
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
var xmlhttp=GetXmlHttpObject();
然后你定义你的回调:
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
并发送它,但我会在网址中包含一个随机变量,以确保浏览器不缓存任何内容
xmlHttp.open("GET",url+"&sid="+Math.random(),true);
xmlHttp.send(null);
无论如何,可能你的问题与ajax本身无关,可能你的代码中还有其他内容导致一切崩溃。
例如,看一下chrome控制台,我确定你会在错误日志中找到一些有用的信息。如果您不知道怎么做,这里有guide
答案 1 :(得分:0)
首先,我已经清理了一下你的代码:
function showUser2(str2){
if (str2==""){
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest();
else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET", "productlistajax.php?q=" + drdownValue + "&version1=" + buttonValue1, true);
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
var drdownValue = document.getElementsByName('shorting').item(0).value;
var buttonValue1 = document.getElementsByName('buttonpassvalue1').item(0).value;
var value = parseInt(document.getElementById('count').value, 10);
value = isNaN(value) ? 0 : value;
value++;
document.getElementById('count').value = value;
var val123 = document.getElementById('count').value.trim();
var gotnumber = document.getElementById('getpagevalue').value.trim();
if(val123 > gotnumber){
buttonpassvalue1.setAttribute("disabled","disabled");
buttonpassvalue.removeAttribute("disabled");
}else{
buttonpassvalue.removeAttribute("disabled");
buttonpassvalue1.removeAttribute("disabled");
}
alert(drdownValue);// to check click and value
alert(buttonValue1);// to check click and value
xmlhttp.send();
}
请注意,我已将xmlHTTP.open移到xmlHTTP.onreadystatechange之前。
如果这不能解决您的问题,请删除非必要的代码,以便我更好地了解您的意图。
jQuery在你的情况下只会保存几行代码。您可以编写紧凑,健壮且可维护的JavaScript代码。我特意注册了StackOverflow,这样我就可以分享我对普通OL'JavaScript的了解。
答案 2 :(得分:0)
Chrome,Firefox和&amp; Opera不支持Microsoft对象。您正在使用
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
在chrome中,这一行给了我这个错误:
ReferenceError:未定义ActiveXObject
您必须以跨浏览器兼容的方式获取数据。这可以使用jQuery或普通Javascript