2013-03-12 95 views
1

我需要在表單提交時執行一個無聲帖子。那個帖子的結果應該被加載到一個div中。該帖子工作得很好,但瀏覽器正在將用戶重定向到發佈的頁面,而不是將該頁面靜靜地加載到div中。這裏是代碼...Jquery Ajax HTTP Post

$('#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; 
    }); 

我一直玩的語法一段時間沒有成功。有任何想法嗎?

我試過這個有和沒有電子仍然沒有運氣。

$('#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 2013-03-12 04:08:13

+0

中擁有的東西,你只需要這些'e.preventDefault();'或'return false'之一。 – darshanags 2013-03-12 04:18:16

+0

頁面上是否有任何其他JavaScript代碼可以設置另一個提交處理程序正在做其他事情? – 2013-03-12 04:18:24

回答

0

您需要告訴ContentType的ajax請求。添加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

已經OP返回false以防止默認操作 – 2013-03-12 04:12:26

+0

沒有任何運氣與這些。我會更新我的代碼以反映我所嘗試的內容。 – Mike 2013-03-12 04:14:23

+0

@Ravi我在這種情況下使用'return false'出現了問題(儘管它*應該工作)。我發現使用'e.preventDefault()'更可靠。 – 2013-03-12 04:14:49

0

嘗試,創建一個帶有功能阿賈克斯在其中發佈代碼,並通過點擊按鈕進行呼叫

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>