Rumah >pembangunan bahagian belakang >tutorial php >Mengapa jQuery Saya Mengesahkan Kaedah Jauh Menunjukkan Ralat Ketersediaan Nama Pengguna yang Salah?

Mengapa jQuery Saya Mengesahkan Kaedah Jauh Menunjukkan Ralat Ketersediaan Nama Pengguna yang Salah?

Linda Hamilton
Linda Hamiltonasal
2024-12-23 15:10:18200semak imbas

Why Does My jQuery Validate Remote Method Show the Wrong Username Availability Error?

Kaedah Jauh Sahkan jQuery: Menyelesaikan Masalah Pengesahan Nama Pengguna

Apabila menggunakan kaedah jauh jQuery Validate untuk menyemak sama ada nama pengguna wujud dalam pangkalan data, senario tertentu boleh membawa kepada mesej ralat yang salah. Artikel ini menangani isu biasa di mana mesej ralat "Nama pengguna ini sudah diambil" dipaparkan walaupun nama pengguna tidak wujud.

Memahami Kaedah Jauh

Kaedah jauh membolehkan anda mengesahkan medan terhadap data yang diambil daripada skrip sebelah pelayan. Ia memerlukan dua parameter:

  • url: URL skrip yang akan melaksanakan pengesahan
  • jenis: Kaedah permintaan HTTP (biasanya GET atau POST)

Contoh Pelaksanaan

Dalam kod yang disediakan, skrip jQuery berikut mengesahkan medan nama pengguna:

$("#signupForm").validate({
    rules: {
        username: {
            required: true,
            minlength: 3,
            remote: "check-username.php"
        }
    },
    messages: {
        username: {
            remote: "This username is already taken! Try another."
        }
    }
});

Skrip check-username.php bertanggungjawab untuk mendapatkan semula nama pengguna daripada permintaan POST dan menyemak sama ada ia wujud dalam pangkalan data:

<?php
require_once "./source/includes/data.php";
header('Content-type: application/json');

$name = mysql_real_escape_string($_POST['username']);

$check_for_username = mysql_query("SELECT username FROM mmh_user_info WHERE username='$name'");

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

Menyelesaikan Isu

Skrip PHP asal dikembalikan benar untuk menunjukkan bahawa nama pengguna wujud, tetapi ia juga menggemakan hasil, yang menyebabkan jQuery Validate memaparkan mesej ralat palsu.

Skrip PHP yang diperbetulkan adalah seperti berikut:

<?php
require_once "./source/includes/data.php";
header('Content-type: application/json');
$request = $_REQUEST['username'];

$query = mysql_query("SELECT * FROM mmh_user_info WHERE username ='$username'");
$result = mysql_num_rows($query);
if ($result == 0) {
    $valid = 'true';
} else {
    $valid = 'false';
}
echo $valid;
?>

Dengan hanya mengembalikan nilai boolean true atau false dalam skrip PHP, jQuery Validate kini boleh menentukan dengan betul sama ada nama pengguna itu wujud.

Atas ialah kandungan terperinci Mengapa jQuery Saya Mengesahkan Kaedah Jauh Menunjukkan Ralat Ketersediaan Nama Pengguna yang Salah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn