我有两个预先形成AJAX调用的JS函数,我想测试它们,所以我创建了两个带有不同id的段落,这些段落将保存响应文本的结果:
<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
on)时,每个函数都会按预期更改自己的段落,但是当我运行它们时,我只能看到< strong>最后功能。
我有一个创建XMLHttpRequest的函数,它获取变量test
,该变量发送应该由每个函数更改的段落id(如上所述,当每个函数都被自己调用时,它正在工作)。 / p>
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通过PHP函数预先形成数据库insert
,并且它在任何情况下都能正常工作。重要的是要注意问题只是段落更改而不是服务器中发生的事情。
任何人都知道如何解决这个问题?感谢...
修改
以下是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");
}
答案 0 :(得分:2)
当您声明“httpRequest”时忘记了var
,因此第二个调用会覆盖第一个调用。没有var
声明,变量是全局的。
在“sendRequest()”的顶部添加:
var httpRequest;