2013-03-12 3 views
1

Мне нужно выполнить молчаливое сообщение после отправки формы. Результаты этого сообщения затем должны быть загружены в div. Сообщение работает нормально, но браузер перенаправляет пользователя на страницу, на которую отправляется сообщение, а не на загрузку этой страницы в div. вот код ...JQuery Ajax HTTP сообщение

$('#task_details_form').submit(function() { 
      // Submit AJAX request 
     $.ajax({ 
       url  : $(this).attr('action'), 
       type  : 'post', 
       data  : $(this).serialize(), 
       cache : false, 
       success : function(data) { 
         $('#user_tasks').html(data);  
        } 

       }); 
     return false; 
    }); 

Я играл с синтаксисом какое-то время без успеха. Есть идеи?

Я пробовал это с и без e и все еще не повезло.

$('#task_details_form').click(function(e) { 
     e.preventDefault(); 
      // Submit AJAX request 
     $.ajax({ 
       url  : $(this).attr('action'), 
       type  : 'post', 
       data  : $(this).serialize(), 
       cache : false, 
       dataType : 'json', 
       success : function(data) { 
         $('#user_tasks').html(data);  
        } 

       }); 
     return false; 
    }); 
+0

1) закомментировать '$ ('#') user_tasks HTML (данные).' И посмотреть, если страница перенаправляется. 2) опубликуйте то, что у вас есть в переменной 'data' – darshanags

+0

, вам нужен только один из этих' e.preventDefault(); 'или' return false' – darshanags

+0

. Есть ли какой-либо другой код JavaScript на странице, который мог бы установить другой обработчик отправки, который делает что-то еще? –

ответ

0

необходимо указать ContentType запроса ajax. add conentType

При отправке данных на сервер используйте этот тип контента. По умолчанию «application/x-www-form-urlencoded; charset = UTF-8», что отлично подходит для в большинстве случаев. Если вы явно передаете контент-тип в $ .ajax(), то он будет всегда отправляться на сервер (даже если данные не отправляются). Если не задана кодировка , данные будут переданы на сервер с использованием кодировки сервера ; вы должны соответствующим образом декодировать его на стороне сервера .

contentType:"Application/JSON" 
0

Вы должны предотвратить действие по умолчанию от формы представления. Обычно, когда вы отправляете форму, браузер перенаправляет с текущей страницы на целевую страницу.

Вам нужно изменить:

$('#task_details_form').submit(function() { 

в

$('#task_details_form').submit(function(e) { 

, а затем добавьте следующее в первой строке функции:

e.preventDefault(); 
+1

уже возвратит false, чтобы предотвратить действие по умолчанию. –

+0

Не повезло ни с одним из них. Я обновлю свой код, чтобы отразить то, что я пробовал. – Mike

+0

@Ravi У меня возникли проблемы с использованием 'return false' в этом типе ситуации (несмотря на то, что он * должен * работать). Я нашел использование 'e.preventDefault()' более надежным. –

0

Try, создавая функцию с код проводки ajax и вызов при нажатии кнопки

Пример

function PostMe(){ 
    var myForm = $('form#id_of_your_form'); 

     $.ajax({ 
     url  : myForm.attr('action'), 
     type  : 'post', 
     data  : myForm.serialize(), 
     cache : false, 
     success : function(data) { 
         $('#user_tasks').html(data);  
        } 

     }); 
} 

и кнопка

<button onclick="PostMe();">Async Post</button> 
Смежные вопросы