我似乎遇到了JQUERY的问题。
我有一个onclick事件,调用一个对话框打开。 打开对话框时,它会调用两个Jquery请求函数。
两个函数都发送一个成员ID,并且都返回所需的信息,但只有一个请求显示在div中。
这是调用两个函数的对话框......
$("#memberInfo").dialog({
open: function() {
getUserCourseInfo(memberid);
getUserInfo(memberid); },
autoOpen: false,
height: 750,
width: 610,
modal: true,
title: 'Member Information',
buttons: {
Close: function() {$(this).dialog( "close" );}},
close: function() {
document.getElementById("memberInfoInner").innerHTML="Please Wait...";}
});
这是第一个功能...
function getUserInfo(str) //Show the individual user
{
document.getElementById("memberInfoInner").innerHTML="";
if (str=="")
{
document.getElementById("memberInfoInner").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("memberInfoInner").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","getUser.php");
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send("q="+ str);
}
这是第二个功能......
function getUserCourseInfo(str1)
{
document.getElementById("Courses").innerHTML="";
if (str1=="")
{
document.getElementById("Courses").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp1=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhtt1p=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp1.onreadystatechange=function()
{
if (xmlhttp1.readyState==4 && xmlhttp1.status==200)
{
document.getElementById("Courses").innerHTML=xmlhttp1.responseText;
}
}
xmlhttp.open("POST","getUserCourseInfo.php");
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send("q="+ str1);
}
div在代码中稍后正确定义。 任何人都可以给予的任何帮助都会很棒。
由于
理查德
答案 0 :(得分:2)
USE jQuery ajax()...保存所有这些头痛和额外的代码。
然后:
xmlhtt1p
是错误的,第二个函数中的其他引用也是错误的。(这是你的真实问题)
另外(不是问题的一部分,但......) 为什么:
document.getElementById("Courses").innerHTML="";
if (str1==""){
document.getElementById("Courses").innerHTML="";
return;
}
当
document.getElementById("Courses").innerHTML="";
if (str1=="") {
return;
}
是一样的吗?
编辑:注意:xmlhttp,xmlhttp1,xmlhtt1p都是全局引用,是不是意图?如果是这样,ajax调用的异步性质可能会妨碍你。
答案 1 :(得分:1)
我会在黑暗中刺伤,并说这可能是你的问题:
function getUserCourseInfo(str1)
{
document.getElementById("Courses").innerHTML="";
if (str1=="")
{
document.getElementById("Courses").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp1=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhtt1p=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp1.onreadystatechange=function()
{
if (xmlhttp1.readyState==4 && xmlhttp1.status==200)
{
document.getElementById("Courses").innerHTML=xmlhttp1.responseText;
}
}
xmlhttp.open("POST","getUserCourseInfo.php");
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send("q="+ str1);
}
请注意,最后三行引用xmlhttp
,而函数的其余部分引用xmlhttp1
。