Archive for Programming

Variable scope in js and ajax function

Often, when we encounter a situation when the link has to be followed with some condition check in server, we could skip the form and use the simple a tag to navigate the link with javascript/ajax. You could simple use the ajax call to request the server file and then get the response and based on the response you could either follow the link or block it.

But in doing so, you may have to share the variable between javascript function and ajax function. This arises the variable scope issue in javascript. We have to use the scope operator to point the variable properly. In our case, we have defined the scope as var _this = this; . Now we could use this operator to access the js variable inside the ajax function.

The a tag will navigate the link by default so in order to block it we will use the onClick event. This event will fire and the link will be navigated if the response is true and our function returns either true or false based on the server response. And that’s that. Simple huh!! The code should be self explanatory. But just in case you need my help, you know where to find me else please drop a comment 🙂

<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
function checkA() {
	var _this = this;
	var check;

	$.ajax({ 
		type: 'POST',
		url: 'checkhere.php',
		async: false,
		success: function (response) {			
			if(response) {
				_this.check = true;
			}else {
				_this.check = false;
			}
		}
	});
	
	return _this.check;
}
</script>
<a href="gohere.php" onclick="return checkA();">Follow Link with Check</a>

Pause and Cancel Operation using Ajax

Recently I came accross the situation when I need to upload zip file containing multiple files and have to compute some operation for each file. The upload process could be achieved easily using ajax file upload. But the part that obstruct me is the pause and cancel operation in ajax.

I googled it a lot and there is no single tutorial on that topic. So, I decided to write it myself. Below is just the code snippet for pause and cancel operation. You have to call the ajax request function recursively in order to achieve this operation until all the queue are processed. It checks the pause status and only operates if the process is resume. The code should be fairly simple and self explanatory.

<script>
$(document).ready(function() {
	var xhr;
	var pause = false;
	var counter = 0;
	var lastEncounter = 0;
	var arr = ["1","2","3","4"];
				
	function myAjaxRequest(value) {	
		if(!pause) {
			lastEncounter = value;
			xhr = $.ajax({
				url: 'test.php',
				type: 'GET',
				data: "",
				success: function(data) {
					counter++;		
					if(counter < arr.length) {
						myAjaxRequest(arr[counter]);
					}
				}							                    
       });				
		}					
	}
				
	$("#start").click(function(e) {	
		myAjaxRequest(arr[0]);				
	});				
						
	$("#cancel").click(function(e) {
		xhr.abort();
	});
				
	$("#pause").click(function(e) {
		pause = true;
	});
				
	$("#resume").click(function(e) {
		pause = false;
		myAjaxRequest(lastEncounter + 1);
	});
});
</script>

<input type="button" value="Start" id="start">
<input type="button" value="Cancel" id="cancel">
<input type="button" value="Pause" id="pause">
<input type="button" value="Resume" id="resume">

How to read the rar content in php?

To read the rar content in php, you should have your rar extension enabled first. The extension is located in /php/ext directory. To enable it add this line to php.ini file.
extension = php_rar.dll

If you don’t have a .dll file then it could be downloaded from here php_rar.dll

function read_rar_file($rarfile) {
$rar_file = rar_open($rarfile) or die("Can't open Rar archive");
$entries = rar_list($rar_file); // each entry of a rar

foreach ($entries as $entry) {
	$stream = $entry->getStream(); 
	
	$file = '';
	while (!feof($stream)) {
		$buff = fread($stream, 8192);
		if ($buff !== false) {
			$file .= $buff; // file content for a rar file
		}else {
			break;
		}
	}
        $each_file_content[$entry->getName()] = $file;	
}
fclose($stream);
rar_close($rar_file);
}
000webhost logo