2012-06-08 1 views
5

У меня проблема с обновлением страницы после сообщений ajax, я пробовал как 6 разных вариантов, и в какой-то момент я получил правильный результат, но не смог остановить страницу от обновления и после того, как поиск в сети и вокруг него на этом сайте, в настоящее время ни один из них не работает, и это все еще освежающий ...Сообщение ajax, но не может предотвратить обновление

текущий код:

$('#submit_btn').click(function() { 
/*event.preventDefault();*/ 
var curPassword = $("input#curPassword").val(); 
var newPassword = $("input#newPassword").val(); 
var new2Password = $("input#new2Password").val(); 
/*var params = 'curPassword='+ curPassword + '&newPassword=' + newPassword + '&new2Password=' + new2Password; */ 
var params = { 
    curPassword: curPassword, 
    newPassword: newPassword, 
    new2Password:new2Password 
}; 
$.ajax({ 
     type: "POST", 
     url: "testAjax.php", 
     data: params, 
     success: function(msg){ 
      alert(msg); 
     } 
    }); 
    return false; 
}); 

форма:

<form method="post" action="" name="confirmChange" class="confirmChange"> 
<label for="curPassword">Current Password:</label> 
<input type="password" name="curPassword" id="curPassword" value="" /> 
<label for="newPassword">New Password:</label> 
<input type="password" name="newPassword" id="newPassword" value="" /> 
<label for="new2Password">Confirm New Password:</label> 
<input type="password" name="new2Password" id="new2Password" value="" /> 
<br /> 
<input type="button" name="confirmChange" class="confirmChange" id="submit_btn" value="Change" /> 

Цените любую помощь в получении этой работы =/

Update: Вынул другой, не напрямую связанных с кодом, как это своего рода суматоху вопрос. Также обновленный код, чтобы отменить последнюю версию. Я изменил URL-адрес ajax на простой textAjax.php с простым echo hello world ничего другого, где я все еще ничего не получаю.

Update 2 попытался изменить код яваскрипта на:

$('#submit_btn').click(function() { 
     alert('Button Clicked'); 
}); 

И я не получаю ничего ... Если это форма ниже, как это возможно, функция клик не работает вообще ?

+2

Я думаю, что вам, возможно, придется смотреть в preventDefault(). Я не уверен, как работает jQuery, но я думаю, что вам нужно вызвать эту функцию вместо того, чтобы возвращать false. –

+0

закройте вашу кнопку :) /> может добавить некоторый прогресс – tomexsans

ответ

0

Я думаю, что я установил его с помощью:

$('#submit_btn').live('click', (function() { 

Я по крайней мере, начал получать ответ при нажатии, но я не обновляя или получить обратно любого эха от php-файл, но, надеюсь, это будет легче отладить.:)

+0

Yup, отлично работает сейчас! действительно должны большие вещи: http://stackoverflow.com/users/634752/sbeliv01 из другого сообщения. Я не могу отправлять личные сообщения, потому что я нахожусь на новом сайте или на этом сайте просто их нет, или я хотел бы поблагодарить его, поскольку он на самом деле решил много моих проблем непреднамеренно. :) Я всегда думал, что это было использовано как: $ ('# submit_btn'). Live(). Click (function() {который никогда не работал ... и ушел в ситуациях, подобных этому вопросу. –

2

Вам не нужно использовать type = "submit" для ввода. Просто используйте type = "button" и вызовите функцию ajax в событии щелчка кнопки.

<input type="button" name="confirmChange" class="confirmChange" id="submit_btn" value="Change"> 

$('#submit_btn').click(function() { 
    (ajax code here) 
}); 

preventDefault() также будет работать, но, на мой взгляд, почему предотвратить событие из встречающихся в природе, когда вы можете просто избежать с помощью кнопки вообще представить?

Обновление: Я только понял, что использование submit позволит пользователям нажать Enter, чтобы инициировать ваши действия, поэтому, возможно, есть и некоторые достоинства. В любом случае, here's a similar question that contains elaborations into preventDefault().

Обновление 2: Вам необходимо исправить свои параметры в функции ajax. Используйте массив вместо того, чтобы пытаться построить строку запроса:

var params = { 
curPassword: curPassword, 
newPassword: newPassword, 
new2Password:new2Password 
}; 
+0

Спасибо за ввод, я отредактировал исходное сообщение с обновленным кодом, и он не освежает, но, похоже, это не публикация, поскольку я не получаю никаких изменений в db, ни обратной связи с php-страницей ... –

+0

См. мое обновление в ответе выше. Ваши параметры не передаются должным образом. – nageeb

+0

Все еще ничего =/ –

1

Инкапсулируйте ваш вызов AJAX в следующем блоке кода

 
$('form.confirmChange').submit(function(event) { 
     event.preventDefault(); 
     #Rest of your code goes in here 
}); 

preventDefault() предотвращает действие по умолчанию события от запуска.

0

Попробуйте

<script> 
function refreshpage(){ 
(ajax code here) 
    return false; 
} 
</script> 

<form onsubmit="return refreshpage();"> 
<input type = "submit" value="submit_btn"> 
</form> 
0

У меня была та же проблема. Как и вы, я обернул теги <input> внутри пары тегов <form>. Несмотря на то, что не было <submit>, я обнаружил, что когда я нажал на свою кнопку, чтобы вызвать вызов Ajax, это было обновление страницы - и фактическое представление формы на страницу.

Я закончил удаление тегов <form>, и этот режим остановлен, но Ajax по-прежнему работает должным образом. Надеюсь, это поможет кому-то еще, кто испытывает это.

0

Используйте цикл для запуска вызова ajax только один раз.

var i; 
for(i=0;i<1;i++){ 
//ajax code here 
} 

Таким образом, то он не будет звонить снова и снова ..

+0

Если вы определите ' var i; 'в том же стеке - он будет вызываться каждый раз, так как каждый раз' i' не будет инициализироваться. –