2015-07-10 40 views
3

我在我的頁面上有一個表格,我不想提交。這裏是我試圖基本做的一個例子。當我點擊一個按鈕時,我想要發送ajax請求,但不提交表單。這是在點擊我的按鈕時,將運行函數的例子格式:如何在不提交表單的情況下使用jquery ajax發送表單數據?

function clicked() 
{ 
    try { 
      var url = "test.php?t1=1&t2=2" 
      var postData = $("#myForm").serializeArray(); 
      $.ajax(
      { 
       url : url, 
       beforeSend: function (request) 
       { 
        request.setRequestHeader('Content-Type', 'text/html; charset=utf-8'); 
       }, 
       type: "POST", 
       data : postData, 
       contentType: false, 
       processData: false, 
       success:function(data, status, xhr) 
       { 
        if(status == "success") 
        { 
         alert(data); 
         // Do something on page 
        } 
        else 
        { 
         // Do something on page 
        } 
       }, 
      }); 
     } 
    catch (e) 
    { 
     alert("Error Adding POI:\n" + e); 
    } 
} 

當我禁用的形式使用的preventDefault功能提交表單不會提交。然而,表單只是發送一個ajax post請求到我的url「test.php?t1 = 1 & t2 = 2」,沒有我的表單的任何輸入值。如果沒有preventDefault,表單會提交併導航離開頁面。沒有發送ajax請求。有沒有任何方式發送表單數據到URL「test.php?t1 = 1 & t2 = 2」與ajax請求沒有提交表單?

在此先感謝。任何幫助是極大的讚賞。

+0

序列化JSON字符串輸入值,並沿JSON請求 –

+0

發送而不是使一個表格(你似乎不想使用)的,你爲什麼不只是創建一個包含所有一個div您的輸入結尾處帶有一個按鈕。然後在JS中,將按鈕鏈接到ajax請求。 – tektiv

+0

謝謝tektiv。這將工作,但是有沒有簡單的方法來序列化輸入的值?序列化方法是否在一個有輸入的div上工作? –

回答

3

TRY:當我挖出一些細節你

$('input [type="submit"]').on('click',function(e){ 
    e.preventDefault(); 
    var url = "test.php?t1=1&t2=2" 
       var postData = $('this').serialize(); 
       $.ajax(
       { 
        url : url, 
        beforeSend: function (request) 
        { 
         request.setRequestHeader('Content-Type', 'text/html; charset=utf-8'); 
        }, 
        type: "POST", 
        data : postData, 
        success:function(data, status, xhr) 
        { 
         if(status == "success") 
         { 
          alert(data); 
          // Do something on page 
         } 
         else 
         { 
          // Do something on page 
         } 
        }, 
       }); 

    }) 
+0

感謝您的評論madalin,但不幸的是,它仍然無法正常工作。它向url發送一個ajax post請求,但不包括我的表單數據。 –

+0

t1和t2用於什麼?你的控制檯有什麼錯誤? – madalinivascu

+0

這些只是我想要發送的變量。 –

0

以下骯髒的黑客可能工作。還請繼續使用preventDefault來阻止表單提交。

//Change 
var url = "test.php?t1=1&t2=2" 
var postData = $("#myForm").serializeArray(); 

//To 
var url = "test.php" 
var postData = "t1=1&t2=2&" + $("#myForm").serialize(); 
+0

感謝您的評論lshettyl。我嘗試過,但它只發送t1和t2。它不發送表單數據。 –

+0

您是否嘗試提醒'postData'並查看它輸出的內容?此外,使用HTML格式更新您的問題。 – lshettyl

相關問題