Bonjour,
Je voudrais savoir s'il est possible de tester la validité d'une URL en javascript.
Quand l'utilisateur entre une url dans un champs, il aurait la possibilité d'appuyer sur un bouton pour tester si le lien existe.
Merci d'avance !
Version imprimable
Bonjour,
Je voudrais savoir s'il est possible de tester la validité d'une URL en javascript.
Quand l'utilisateur entre une url dans un champs, il aurait la possibilité d'appuyer sur un bouton pour tester si le lien existe.
Merci d'avance !
eventuellement lancer un ajax et tester le readystatus ou le responsetext ...
J'aurais peut être du ajouter que je suis un méga débutant PHP... :aie:
[edit]
hum hum.... méga débutant javascript.... hum hum.... je sais pas ce que j'ai aujourd'hui...
ça tombe bien c'est du javascript ^^
Je crois pas que tu puisses appeler une url autre que sur ton site en Ajax
je crois qu'il est pas possible de lancer une requête ajax sur un autre serveur.
Mais indirectement, tu peux créer un script php qui vérifie la validité de l'url et lancer la requête ajax sur ce script.
[edit]oups le temps que j'écrive DoubleU l'a déjà dit[/edit]
Vous pourriez me donner le lien vers un tuto pour lancer une requête ajax ? Je dois avouer que c'est un peu du chinois pour moi...
google + "ajax tuto siddh developpez"
Ok merci. Je m'en vais essayer tout ça.
Voici un proxy php pour "router" ta requête XHR (class_http.php + proxy.php) en mode cross domain :)
et voici le code JS :Edit : ajoute xhr.abort(); dans le if(xhr.status==404){} c'est plus propre :)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 function getXhr(){ var xhr = null; if(window.XMLHttpRequest) // Firefox et autres xhr = new XMLHttpRequest(); else if(window.ActiveXObject){ // Internet Explorer try{xhr = new ActiveXObject("Msxml2.XMLHTTP");} catch(e){try{xhr = new ActiveXObject("Microsoft.XMLHTTP");}catch(e){}} }else{ // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHttpRequest..."); xhr = false; } return xhr; } function testURL(url){ var xhr=getXhr(); xhr.open("GET", 'proxy.php?url='url, true); xhr.onreadystatechange = function(){ if(xhr.status==404){ //404 Error alert(url+' is down'); } } xhr.send(data); }
Le format d'une URL est assez simple et standardisé :
PROTOCOLE://USER:PASSWORD@HOSTNAME:PORT/RESOURCE
PROTOCOLE peut être n'importe quel protocole : http, https, ftp, ftps, irc, etc. Il doit cependant être connu du client et du serveur.
HOSTNAME est le nom du serveur vers lequel pointer (ex: www.google.com).
PORT est le port du serveur auquel l'application doit se connecter (ex: 80, 23, 165, ...)
RESOURCE est le lien vers la ressource du serveur.
USER est utilisé en cas de besoin d'identification.
PASSWORD est utilisé en cas de besoin d'identification.
Deux éléments sont réellement obligatoire dedans : PROTOCOLE (pour dire comment on parle) et HOSTNAME (pour dire à qui on parle). Le reste est assez facultatif, donc.
Typiquement, une URL peut être résolue par la regex suivante :
Pourquoi utiliser le serveur quand le client a déjà tout ce qu'il faut ? :roll:Code:
1
2
3
4
5
6
7
8
9 var protocole = "[a-z]+"; var user = "[a-zA-Z0-9_-]+"; var password = "[a-zA-Z0-9_-]+"; var hostname = "[a-z0-9-\.]+"; var port = "[0-9]+"; var resource = ".*"; var regex = new Regex(protocole + "://("+user+"(:"+password+")?@)?" + hostname + "(:"+port+")?" + "(/"+resource+")?"); alert(regex.test(monUrl));
Pas quand je lis le premier message... Alors désolé si ce n'était pas clair dès le début ;)
pour le coup là c'est du français et ça m'avait l'air tout à fait clair ...
extrait du premier post :
Citation:
Avant quand l'utilisateur entre une url dans un champs, il aurait la possibilité d'appuyer sur un bouton pour tester si le lien existe.
Quoiqu'il en soit, si l'utilisateur entre un mauvais format d'url (ce qui arrive assez souvent si j'en crois mes logs), autant faire la vérification déjà au niveau du client, avant d'aller ennuyer le serveur avec des requêtes inutiles :)
Et puis, si on parle de français clair et correct, la première phrase (qui est la seule que j'ai lue, je l'accorde) ne contenait pas un résumé clair et concis du problème, puisque celui-ci continuait dans le paragraphe suivant.