Tôi có hình thức xác minh biểu mẫu đang hoạt động, bao gồm kiểm tra từ xa tên người dùng có sẵn. chúng tôi đã thêm rất nhiều javascript khác vào tệp script.js và tại một số điểm gần đây, phần từ xa này đã bị hỏng. Chỉ có một trường biểu mẫu được kiểm tra bằng cách xác thực, trường new_name. Nó là bắt buộc (công trình) và phải có sẵn (không hoạt động).Jquery Validate Remote không thành công. Không thể gửi biểu mẫu
Đây là jQuery:
$('#nickname_form').validate({
rules: {
new_name: {
required: true,
remote: {
url: '/api/screenname_unique/',
type: 'post'
}
}
},
messages: {
new_name: {
required: 'Please choose a Forum Username.',
remote: 'That Username is already taken or contains invalid characters.'
}
}
});
Như tôi đã nói ở trên dùng để làm việc, không có thay đổi. Tôi đã kiểm tra phần còn lại của tệp script.js và không có lỗi nào hiển thị. Ngoài ra, trong trang web, chúng tôi không thấy lỗi JS ở bất kỳ đâu. Nếu tôi xóa phần từ xa của mã trên, yêu cầu kiểm tra hoạt động và biểu mẫu sẽ gửi khi có giá trị trong trường.
Với điều khiển từ xa tại chỗ, biểu mẫu sẽ không gửi và phản hồi ajax từ cuộc gọi từ xa là đúng hay sai, không có thông báo lỗi xác thực jQuery được hiển thị. Đây là trang được gọi là từ xa. Nó hoạt động tốt như xa như phản ứng nó được đưa ra cho một giá trị nhất định:
<?php
header('Content-type: application/json');
//get the post value
$screen_name = $_POST['new_name'];
//get their member_id
$member_id = $this->EE->session->userdata['member_id'];
//return false if no screen_name provided
if((!$screen_name) || (!$member_id)) {
echo json_encode(false);
exit;
} else { //there is a screen_name
//Regex Check for valid chars
$valid = !preg_match('/[^a-z0-9_ -]/i',trim($screen_name));
if (!$valid) {
echo json_encode(false);
exit;
}
//SQL
$results = $this->EE->db->query("SELECT member_id FROM exp_members WHERE screen_name = '$screen_name' and member_id <> '$member_id' limit 1");
if ($results->num_rows() > 0) {
echo json_encode(false);
} else {
echo json_encode(true);
}
}
>
Tôi không thực sự chắc chắn nơi để đi từ đây. Ý tưởng?
Bạn đã sử dụng 'console.log' hoặc đã xem các cuộc gọi ajax để gỡ lỗi sự cố chưa? – yoda
Tôi đã xem với Firebug và các cuộc gọi ajax đang trả lại 200 OK cùng với đúng hoặc sai một cách thích hợp. Chức năng này hoạt động tốt - biểu mẫu sẽ không gửi hoặc trả lời đúng tên người dùng không có sẵn. –