I make an AJAX request to a PHP script which returns a number from a text file that changes. This AJAX request should happen every 3 seconds. However, an AJAX request is made once and it doesn’t return anything and firebug shows the AJAX GET request is still being made. After a few minutes it returns and produces a number. It should have made multiple calls but it only made one and it just came back with a final answer. I am struggling to figure out how this happened!? 🙁
//this is called first which calls getStatus which should get the progres of the
//conversion. This AJAX request takes a long time to come back which may hinder the
//getStatus coming back quickly maybe?
function convertNow(validURL){
startTime = setTimeout('getStatus();', 6000);
$.ajax({
type: "GET",
url: "main.php",
data: 'url=' + validURL + '&filename=' + fileNameTxt,
success: function(msg){
}//function
});//ajax
}//function convertNow
function getStatus(){
$.ajax({
type: "POST",
url: "fileReader.php",
data: 'textFile=' + fileNameTxt,
success: function(respomse){
textFileResponse = respomse.split(" ");
$("#done").html("Downloading" + textFileResponse[0]);
if(textFileResponse[0]=='100.0%'){
$("#loading").hide("slow");
$("#done").html("Complete");
return;
}
continueTime = setTimeout('getStatus();', 3000);
}
});//ajax
}
The PHP script the second JavaScript function calls is this:
$fileName = $_POST['textFile'];
//calls an external script to get the text file output
$result = file_get_contents($_SESSION['serverURL']."fileReader.php?textFile=$fileName");
echo $result;
Is the above correct, and is my logic captured above? Or does the above mean only one AJAX request will be made?
This question is in relation to another question. A PHP script that I previously thought was slow. I am hoping the problem is JavaScript related now.
Thank you all for any help.
I was wondering whenever this code suppose to work at all. Let say the whole idea to implement something similar to this in Javascript is doubtful. First of all, because you don’t have any synchronization techniques in JavaScript at all, but in you code your are relying on particular order of execution of your code, which is not the case in 99%. By setting:
you create a kind of concurrency, therefore you can get the second script executed first, although you delayed it, but two requests can reach the server at the same time, so probably the second script will not return you anything, so the success function will not executed anymore.
My hot advise to you consider redesign of your application, since the problem is definetely not in Javascript part at all.
BTW, I think the use of $.ajax call has to be as:
PS. The fact that response take a lot of time to return point to the problem on server side and not in your code in Javascript. And if we started to talk about logging and you’ve mentioned firebug, you can use console.log( “msg”) to log into firebug console your messages.