2010-02-09 5 views
1

J'ai 3 validation à distance dans mon formulaire et 3 d'entre eux fonctionne sans erreurs dans la console firefox. le 3ème ne fonctionne pas correctement dans IE. IE me donne l'erreur "objet ne marche pas en charge cette propriété"jquery validation à distance

cela donne une erreur dans IE check.php:

< ?php 

$sql="select * from people where email = '".$email."'"; 
$row=mysql_query($sql,$db_connection); 
if (!$row) 
{ 
    die('Error: ' . mysql_error()); 
}  

if (mysql_num_rows($row) > 0) 
{ 
    $output = false; 
} 
else 
{ 
    $output = true; 
} 
echo json_encode($output); 

?> 

ici est le jquery correspondant:

email: {// compound rule 
         required: true, 
         email: true , 
         remote: "check.php" 
       }, 

idées pourquoi son lancer une erreur d'objet dans IE. note firefox error console ne montre aucune erreur! merci

Répondre

4

Nous devrions voir la page pour être sûr, mais une raison courante pour l'erreur "L'objet ne supporte pas cette propriété ou méthode" d'IE est que vous avez un élément sur la page dont name ou L'attribut id contient le même nom qu'une variable globale implicite.

IE6-7 a un malheureux comportement non standard des références de copie à des éléments nommés/Idd dans les propriétés de l'objet de la fenêtre:

<div id="foo">bar</div> 

alert(window.foo); // the div node 

Cela signifie qu'ils partagent un espace de noms avec des variables:

<div id="foo">bar</div> 

var foo= 3; 
alert(window.foo); // now 3 

Mais, dans un autre comportement non standard malheureux, si vous ne dites pas que vous voulez une variable, IE est confus. Il essaie d'attribuer de nouvelles valeurs au noeud élément lui-même, qui échouera:

<div id="foo">bar</div> 

foo= 3; // implicit global variable in other browsers. Error in IE 

Cela se produit également lorsque vous oubliez var et faire une globale accidentelle dans une fonction:

function bof() { 
    foo= 3; // Error in IE 
} 

Ainsi, vous Vous devrez passer par votre script à la recherche des variables auxquelles vous avez assigné sans vous souvenir d'inclure une instruction var pour eux. Ce n'est pas seulement une bonne pratique (et exigée par le JS 'mode strict' d'ECMA262-5 à l'avenir) - cela empêche IE d'être stupide et de casser vos pages.

Soit dit en passant ceci:

$sql="select * from people where email = '".$email."'"; 

est une injection SQL dangereuse trou de sécurité. Lors de la construction de requêtes SQL, vous devez utiliser mysql_real_escape_string() sur tout texte que vous souhaitez insérer dans un littéral de chaîne.

Questions connexes