5

I want to display profile pictures from gravatar for only those users who have a picture set. Doing this server side means doing around 100 HEAD requests to gravatar for checking 404 codes and appropriately outputting img tags for each request.

So, I want to implement a javascript function where I can just output 100 urls for which javascript can check the http status codes and output the appropriate image tags dynamically. Is that even possible? How?

Deepak Mittal
  • 328
  • 1
  • 4
  • 10

1 Answers1

6

The keyword you're missing is "status code" (that's what we collectively call all the HTTP response codes of 200, 404, 500, etc). I'm going to assume you're using jQuery, in which case, all the documentation you need for doing AJAX is at http://api.jquery.com/jQuery.ajax/

Here's a simple example for a request that displays an alert, but only if a 404 status code is returned (lifted almost verbatim the link above):

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
   $(function() {
      var url = "some_url";
      $.ajax(url,
      {
         statusCode: {
         404: function() {
            alert('page not found');
         }
      }
   });   
});
</script>
Shalom Craimer
  • 20,659
  • 8
  • 70
  • 106
  • 1
    If the image is outside your domain you will see: No 'Access-Control-Allow-Origin' header is present on the requested resource. – Jorge Muñoz Mar 29 '14 at 00:13
  • @elGEoRgETheKiLLa Is there any way of overcoming that? I am planing to make a javascript snippet to open sequential images based on a base url with a number on it, and go both directions. If the base url is xxx10.jpg, I'd like to test both xxx09.jpg and xxx9.jpg to know the correct one and load the rest of them (01, 02, 03... or 1, 2, 3...) correctly. – DiegoDD Jan 03 '16 at 04:36
  • 1
    Doesn't this code actually download the page at the given URL? Is there any way just to check the response status, without actually downloading the contents? – Marc Aug 29 '17 at 08:55
  • 1
    @Marc Yes, there is a way. HTTP allows sending "HEAD" instead of "GET", and that only returns the headers (including the status code). I'm not sure whether it's possible to generate that using Javascript AJAX libraries. I've never done it :) – Shalom Craimer Aug 31 '17 at 05:45