mam taki problem napisałem coś takiego :
Kod
function getXMLHttpRequestObject()
{
var wersjeMSXML = new Array(
"MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP"
);
try{
return new XMLHttpRequest();
}
catch(e){
for (var indeks in wersjeMSXML){
try{
return new ActiveXObject(wersjeMSXML[indeks]);
}
catch(e){
}
}
return null;
}
}
var run = false;
function reputation_act(pid, topic_id, author_id, action_id)
{
if(run){
return;
}
var url = ipb_var_base_url+'autocom=reputation&CODE=add&pid='+pid+'&topic_id='+topic_id+'&author_id='+author_id+'&action='+action_id;
var points = document.getElementById("RepPoints"+pid);
var but = document.getElementById("rep_buttons"+pid);
but.removeChild(but.childNodes[0]);
but.removeChild(but.childNodes[1]);
var XMLHttpRequestObject = getXMLHttpRequestObject();
if(XMLHttpRequestObject){
run = true;
XMLHttpRequestObject.open("POST", url);
XMLHttpRequestObject.setRequestHeader(
'Content-Type', 'application/x-www-form-urlencoded');
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4){
if(XMLHttpRequestObject.status == 200){
points.innerHTML = XMLHttpRequestObject.responseText
}
run = false;
delete XMLHttpRequestObject;
}
}
XMLHttpRequestObject.send(null);
}
}
function rep_post_stat (postID, st)
{
if(run){
show();
return;
}
var url = ipb_var_base_url+'autocom=reputation&CODE=p_statistic&pid='+postID+'&st='+st;
var stat_window = document.getElementById("topic_who"+postID);
var change_link = document.getElementById("stat_but"+postID);
var general_link = document.getElementById("rep-general-"+postID);
var XMLHttpRequestObject = getXMLHttpRequestObject();
if(XMLHttpRequestObject){
run = true;
XMLHttpRequestObject.open("POST", url);
XMLHttpRequestObject.setRequestHeader(
'Content-Type', 'application/x-www-form-urlencoded');
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4){
if(XMLHttpRequestObject.status == 200){
ans_func = XMLHttpRequestObject.responseText.split("@");
stat_window.innerHTML = ans_func[0];
change_link.innerHTML = ans_func[1];
general_link.innerHTML = ans_func[2];
}
hide();
run = false;
delete XMLHttpRequestObject;
}
}
XMLHttpRequestObject.send(null);
}
}
var loading = document.getElementById("loading-layer");
function show()
{
loading.setAttribute("style","display: block; position: fixed; top:50%;right: 50%");
}
function hide()
{
loading.setAttribute("style","display:none;");
}
{
var wersjeMSXML = new Array(
"MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP"
);
try{
return new XMLHttpRequest();
}
catch(e){
for (var indeks in wersjeMSXML){
try{
return new ActiveXObject(wersjeMSXML[indeks]);
}
catch(e){
}
}
return null;
}
}
var run = false;
function reputation_act(pid, topic_id, author_id, action_id)
{
if(run){
return;
}
var url = ipb_var_base_url+'autocom=reputation&CODE=add&pid='+pid+'&topic_id='+topic_id+'&author_id='+author_id+'&action='+action_id;
var points = document.getElementById("RepPoints"+pid);
var but = document.getElementById("rep_buttons"+pid);
but.removeChild(but.childNodes[0]);
but.removeChild(but.childNodes[1]);
var XMLHttpRequestObject = getXMLHttpRequestObject();
if(XMLHttpRequestObject){
run = true;
XMLHttpRequestObject.open("POST", url);
XMLHttpRequestObject.setRequestHeader(
'Content-Type', 'application/x-www-form-urlencoded');
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4){
if(XMLHttpRequestObject.status == 200){
points.innerHTML = XMLHttpRequestObject.responseText
}
run = false;
delete XMLHttpRequestObject;
}
}
XMLHttpRequestObject.send(null);
}
}
function rep_post_stat (postID, st)
{
if(run){
show();
return;
}
var url = ipb_var_base_url+'autocom=reputation&CODE=p_statistic&pid='+postID+'&st='+st;
var stat_window = document.getElementById("topic_who"+postID);
var change_link = document.getElementById("stat_but"+postID);
var general_link = document.getElementById("rep-general-"+postID);
var XMLHttpRequestObject = getXMLHttpRequestObject();
if(XMLHttpRequestObject){
run = true;
XMLHttpRequestObject.open("POST", url);
XMLHttpRequestObject.setRequestHeader(
'Content-Type', 'application/x-www-form-urlencoded');
XMLHttpRequestObject.onreadystatechange = function()
{
if (XMLHttpRequestObject.readyState == 4){
if(XMLHttpRequestObject.status == 200){
ans_func = XMLHttpRequestObject.responseText.split("@");
stat_window.innerHTML = ans_func[0];
change_link.innerHTML = ans_func[1];
general_link.innerHTML = ans_func[2];
}
hide();
run = false;
delete XMLHttpRequestObject;
}
}
XMLHttpRequestObject.send(null);
}
}
var loading = document.getElementById("loading-layer");
function show()
{
loading.setAttribute("style","display: block; position: fixed; top:50%;right: 50%");
}
function hide()
{
loading.setAttribute("style","display:none;");
}
działa idealnie w Firefoxie ale w IE wywala się funkcja reputation_act błąd: type mismath
Rzadko używam Ajax-a czy w ogóle JS i nie mogę sobie z tym poradzić.
Z góry dziękuję.