1

I'm using javascript to check whether the image exist or not in the folder :

function checkUrl(url) {
    var request = false;
    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest;
    } else if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHttp");
    }

    if (request) {
        request.open("GET", url);
        if (request.status == 200) { return true; }
    }

    return false;
}

It works well in IE,Firefox except Chrome. Does anyone know how to fix it with Chrome? Thanks you.

Nothing
  • 2,644
  • 11
  • 64
  • 115
  • This code could never have worked in Firefox, because you're never sending a request using `request.send()`, and it's not a synchronous request. – Rob W Nov 28 '12 at 22:47
  • Rob W : It works on Firefox, except in Chrome. – Nothing Dec 03 '12 at 08:41
  • Show your real code. The code you've shown does not even create a request, so the observation "Works in Firefox" is surprising. Do you know the difference between asynchronous and synchronous methods? – Rob W Dec 03 '12 at 15:23

1 Answers1

0

This is a synchronous solution.

The function makes a request to a server, wait for it to respond, and then returns the result.

function checkUrl(url){
  var request = new XMLHttpRequest()
  request.open("GET", url, false)
  request.send(null)
  if(request.status == 200){
    return true
  }
  return false
}

This second code is an asynchronous solution.

The function sends a request to the server and returns without waiting. When the server responds, the callback gets called with the result.

function checkUrlAsync(url, callback){
  var request = new XMLHttpRequest()
  request.onreadystatechange = function(){
    if(request.readyState != 4) return
    if(request.status == 200){
      callback && callback(true)
    }
    else{
      callback && callback(false)
    }
  }
  request.open("GET", url, true)
  request.send()
}