JQuery удаленная проверка - PullRequest
       0

JQuery удаленная проверка

1 голос
/ 09 февраля 2010

У меня есть 3 удаленных проверки в моей форме, и 3 из них работают без ошибок в консоли Firefox. третий не работает должным образом в IE. IE выдает ошибку "объект не поддерживает это свойство"

это дает ошибку в 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);

?>

вот соответствующий запрос:

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

любые идеи, почему он бросает объектную ошибку в IE. примечание консоль ошибок firefox не показывает никаких ошибок! спасибо

1 Ответ

4 голосов
/ 09 февраля 2010

Мы должны были бы увидеть страницу, чтобы быть уверенными, но общая причина ошибки IE «Объект не поддерживает это свойство или метод» состоит в том, что у вас есть элемент на странице, name или * Атрибут 1002 * содержит то же имя, что и неявная глобальная переменная.

IE6-7 имеет неудачное нестандартное поведение при копировании ссылок на именованные / IDd элементы в свойствах объекта окна:

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

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

Это означает, что они совместно используют пространство имен с переменными:

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

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

Но в другом, к сожалению, нестандартном поведении, если вы не скажете, что хотите переменную, IE запутается. Он пытается присвоить любые новые значения самому узлу элемента, что приведет к ошибке:

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

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

Это также происходит, когда вы забыли var и сделали случайный глобал в функции:

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

Итак, вам нужно будет пройтись по вашему сценарию в поисках переменных, которые вы назначили, не забывая включить для них оператор var. Это не просто хорошая практика (и этого требует JS ECMA262-5 «строгий режим» в будущем) - она ​​не дает IE быть глупым и ломать ваши страницы.

Кстати это:

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

Это опасная дыра в безопасности SQL-инъекций. При построении SQL-запросов вы должны использовать mysql_real_escape_string() над любым текстом, который хотите вставить в строковый литерал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...