Проверка JQuery Удаленная проверка уникальности не работает - PullRequest
1 голос
/ 01 февраля 2012

Я хотел опубликовать это в Интернете, потому что я искал несколько дней по этой проблеме проверки JQuery Remote.Я не могу заставить его работать.Я думаю, что мой PHP-код правильный, так как я протестировал URL-адрес с запросом в URL-адресе, и он возвращает false и true, в зависимости от того, с каким набором записей это один или несколько

Это мой код проверки Jquery:

// validate form and submit
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j("#myform").validate({
rules: {
ord_ref: {
required: true,
minlength: 12,
remote: "check_ord_ref.php"
},
messages: {
ord_ref: {
remote: "Order Number Does Not Exist"
}
}
}
});
});

Это мой PHP-код для удаленной страницы "check_ord_ref.php"

$colname_rscheck_ord_ref = "-1";
if (isset($_GET['ord_ref'])) {
  $colname_rscheck_ord_ref = (get_magic_quotes_gpc()) ? $_GET['ord_ref'] : addslashes($_GET['ord_ref']);
}
mysql_select_db($database_conn, $conn);
$query_rscheck_ord_ref = sprintf("SELECT ref_ord FROM orders WHERE ref_ord = '%s'", $colname_rscheck_ord_ref);
$rscheck_ord_ref = mysql_query($query_rscheck_ord_ref, $conn) or die(mysql_error());
$row_rscheck_ord_ref = mysql_fetch_assoc($rscheck_ord_ref);
$totalRows_rscheck_ord_ref = mysql_num_rows($rscheck_ord_ref);
if($totalRows_rscheck_ord_ref < 0){
        $valid = 'false';
        } else {
        $valid = 'true';

         }
         echo $valid;

Пожалуйста, кто-то может вам помочьрешить головоломку для себя и для всех, у кого возникли проблемы

  1. Использование JQuery 1.5.2 мин.
  2. Проверка правильности без удаленной функции

Ответы [ 4 ]

2 голосов
/ 01 февраля 2012

Хорошо, я не эксперт по PHP, но я знаю, что jQuery Validate ожидает следующий результат от метода удаленной проверки:

Ответ оценивается как JSON и должен быть истинным для допустимых элементов, и может быть любым ложным, неопределенным или нулевым для недопустимых элементов

Отправка вниз "true" или "false" (обратите внимание на кавычки) приведет к тому, что значение будет проанализировано как сообщение об ошибке, а не будет оценено как логический примитив.

Возвращаясь к части PHP, я думаю вы, вероятно, должны использовать json_encode с логическим примитивом. Я не совсем уверен, как это сделать в PHP, но я верю, что это будет примерно так:

$colname_rscheck_ord_ref = "-1";
if (isset($_GET['ord_ref'])) {
  $colname_rscheck_ord_ref = (get_magic_quotes_gpc()) ? $_GET['ord_ref'] : addslashes($_GET['ord_ref']);
}

mysql_select_db($database_conn, $conn);
$query_rscheck_ord_ref = sprintf("SELECT ref_ord FROM orders WHERE ref_ord = '%s'", $colname_rscheck_ord_ref);
$rscheck_ord_ref = mysql_query($query_rscheck_ord_ref, $conn) or die(mysql_error());
$row_rscheck_ord_ref = mysql_fetch_assoc($rscheck_ord_ref);
$totalRows_rscheck_ord_ref = mysql_num_rows($rscheck_ord_ref);

if($totalRows_rscheck_ord_ref < 0){
    $valid = false; // <-- Note the use of a boolean primitive.
} else {
    $valid = true;
}

echo json_encode($valid);
0 голосов
/ 03 ноября 2014

// check_validate.php

<?php

// some logic here

echo json_encode(true);
?>
0 голосов
/ 12 ноября 2013

Чтобы добавить ответ Эндрю Уитакера выше, я должен подчеркнуть, что вы уверены, что ответ является строго JSON и что другие типы содержимого не возвращаются.У меня была та же проблема с моим сценарием, и все, казалось, было установлено правильно - включая использование json_encode().После некоторого устранения неполадок с вкладкой Firebug NET, я смог определить, что уведомления PHP отправляются обратно в браузер, преобразовывая данные из JSON в text / html.После того, как я выключил ошибки, все было хорошо.

0 голосов
/ 12 июня 2012

Эта проблема, по-видимому, мешает удаленным проверкам сценариев, и документация jQuery по этому вопросу явно отсутствует.

Я заметил, что вы используете jQuery 1.5.2: из того, что я понимаю (и нашел из опыта), вы должны использовать обратный вызов jQuery, который отправляется на удаленный скрипт с $ _REQUEST с версиями после 1.4, И JQuery этоожидая «истина» или «ложь» в качестве STRING.Вот пример, подтвердил работу с несколькими формами (я использую jQuery 1.7.1):

if($totalRows_rscheck_ord_ref < 0){
    header('Content-type: application/json');
    $valid = 'false'; //    <---yes, Validate is expecting a string
    $result = $_REQUEST['callback'].'('.$check.')';
    echo $result;
} else {
    header('Content-type: application/json');
    $valid = 'true'; //    <---yes, Validate is expecting a string
    $result = $_REQUEST['callback'].'('.$check.')';
    echo $result;
}

Я нашел этот ответ здесь (в разделе ответов), случайно,и с тех пор перестали вырывать мои волосы.Надеюсь, это кому-нибудь поможет.

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