2 AJAX команды, которые работают, но я вижу только последний "responseText" - PullRequest
1 голос
/ 29 декабря 2011

У меня есть две функции JS, которые преформируют вызовы AJAX, я хотел их протестировать, поэтому создал два абзаца с разными идентификаторами, которые будут содержать результат текста ответов:

<script type="text/javascript">      

    trackApplicationAdded('1139631160', '12445'); //should change test1 paragraph
    trackApplicationRemoved('1139631160'); //should change test2 paragraph

</script> 

<p>Test1: <span id="test1"></span></p>
<p>Test2: <span id="test2"></span></p> 

КогдаЯ запускаю каждую функцию отдельно (commenting из них), каждая меняет свой собственный абзац, как и ожидалось, но когда я запускаю обе из них, я вижу только изменение абзаца, сделанное LAST function.

У меня есть функция, которая создает XMLHttpRequest, который получает переменную test, которая отправляет идентификатор абзаца, который должен быть изменен каждой функцией (и, как уже было отмечено, он работает, когда каждая вызывается сама по себе).

function sendRequest(url, params, test)
{

 // code for IE7+, Firefox, Chrome, Opera, Safari
if (window.XMLHttpRequest)
{
    httpRequest=new XMLHttpRequest();
}     
else // code for IE6, IE5
{
    httpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}

httpRequest.open("POST", url, true); 

//Set request headers for POST command//
httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
httpRequest.setRequestHeader("Content-length", params.length);
httpRequest.setRequestHeader("Connection", "close");

 httpRequest.onreadystatechange=function()
 {
    if(httpRequest.readyState==4 && httpRequest.status==200)
    {
        //Here you can see "test" which, depends on the function, is test1 or test2//
        document.getElementById(test).innerHTML=httpRequest.responseText;
    }
 }

httpRequest.send(params);

//end when the server will responde we will execute the "document.getElementById("txtHint").innerHTML=xmlhttp.responseText;" //

}

Кстати, AJAX преформует базу данных insert с помощью функций PHP и все работает хорошо в любой ситуации.Важно отметить, что проблема заключается только в изменениях абзаца, а не в том, что происходит на сервере.

У кого-нибудь есть идеи, как решить эту проблему?Спасибо ...

РЕДАКТИРОВАТЬ

Вот код 2 функции:

function trackApplicationAdded(fID, fappID) 
{    

var url = "trackApplicationAdded.php";
var params = "facebookID=" + fID + "&facebookApplicationID=" +fappID;

sendRequest(url,params, "test1");  
}


function trackApplicationRemoved(fID) 
{    

var url = "trackApplicationRemoved.php";
var params = "facebookID=" + fID;

sendRequest(url,params, "test2");  
}

1 Ответ

2 голосов
/ 29 декабря 2011

Вы забыли var, когда объявили «httpRequest», поэтому второй вызов перезаписывает первый. Без объявления var переменная является глобальной.

В верхней части "sendRequest ()" просто добавьте:

var httpRequest;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...