2014-05-09 2 views
0

я создаю форму в HTML:JQuery Ajax event.preventDefault() отменить представить действие формы

<form id="flog" action="https://localhost/book.php" method="post"> 
        <div id="inputUser"> 
         <label for="userName">User</label> 
         <input type="text" name="userName" id="userName"> 
        </div> 
        <div id="inputPass"> 
         <label for="password">Password</label> 
         <input type="password" name="password" id="password"> 
        </div> 
        <div id="savePassword"> 
         <input type="checkbox" id="savePassword" value="CheckSavePAssword">Save password 
         <br> 
        </div> 
        <input type="submit" value="Acceptar"> 
       </form> 

И создать функцию представить с JQuery:

$("#flog").submit(function(event) { 
var savePassword = false; 
if($("#CheckSavePAssword").is(':checked')) { 
    savePassword = true; 
} 
var login = new Object(); 
login.username = $("#userName").val(); 
login.pass = $("#password").val(); 
login.savePassword = savePassword; 
var jlogin = JSON.stringify(login); 
event.preventDefault(); 
$.ajax({ 
    url: "./checkLogin.php", 
    type: "POST", 
    dataType: "JSON", 
    data: {"dataLogin" : jlogin}, 
    success: function(data, textStatus, xhr) { 
     console.log("okk "+data); 
    }, 
    error: function(xhr, textStatus, errorThrown) { 
     console.log("error"); 
     console.log(xhr); 
     console.log(textStatus); 
     console.log(errorThrown); 
    } 
}); 
}); 

Но если я не помещаю «event.preventDefault()» функция ajax не запускается, но эта строка (event.preventDefault()) отменяет действие формы отправки. В чем проблема?

+0

Что вы имеете в виду, отменив действие формы? –

+0

'preventDefault()' существует, чтобы остановить перезагрузку страницы. Без него форма просто отправит пользователя на 'book.php' вместо того, чтобы загружать данные асинхронно. Вот почему функция не будет работать без нее. OTOH скрипт PHP не может записывать данные POST. Вы проверили это? – Kebman

+0

Не используйте ajax оставьте его по умолчанию, если вы хотите перенаправить свою страницу book.php ... –

ответ

1

Когда вы используете preventDefault(), вы запрещаете форме проходить традиционную POST, где ваша страница будет отправлена ​​и перезагружена. Вам нужно использовать обработчик событий JavaScript, если вы хотите дать пользователю некоторую обратную связь после вашего вызова AJAX.

+0

это должен быть комментарий, а не ответ ... –

+0

@susheel Я новичок здесь, помогите объяснить? Он задал вопрос, я написал ответ – charmeleon

+0

, это не ответ. его вопрос сам по себе не ясен, что он пытается ... как вы можете сказать, что это ответ. Когда мы не поняли, это должен быть комментарий. –

Смежные вопросы