2009-08-02 147 views
36

我有一個簡單的一個文本輸入表單,當提交時,需要獲取一個php文件(將輸入傳遞給文件),然後將結果(只是一行文本)並將其放在div中,並將div淡入視圖中。jquery提交表單,然後在現有div中顯示結果

這是我現在有:

<form id=create method=POST action=create.php> 
<input type=text name=url> 
<input type="submit" value="Create" /> 

<div id=created></div> 

我需要的是create.php?url=INPUT結果,可以動態加載到div稱爲created

我有jquery表單腳本,但我一直無法讓它正常工作。但我確實已經加載了該庫(文件)。

回答

68

此代碼應該這樣做。你並不需要如此簡單的東西表單插件:

$('#create').submit(function() { // catch the form's submit event 
    $.ajax({ // create an AJAX call... 
     data: $(this).serialize(), // get the form data 
     type: $(this).attr('method'), // GET or POST 
     url: $(this).attr('action'), // the file to call 
     success: function(response) { // on success.. 
      $('#created').html(response); // update the DIV 
     } 
    }); 
    return false; // cancel original event to prevent form submitting 
}); 
2

如果您不希望頁面被刷新,您必須使用AJAX發佈表單。

​​
+0

接住一個提交按鈕的點擊事件不是趕上了形式適當事件提交。你想抓住表單的提交事件。 – 2009-08-02 05:54:37

+0

你當然是對的。更新我的代碼。 – RaYell 2009-08-02 05:56:36

4

這工作也進行文件上傳

$(document).on("submit", "form", function(event) 
{ 
    event.preventDefault(); 

    var url=$(this).attr("action"); 
    $.ajax({ 
     url: url, 
     type: 'POST', 
     dataType: "JSON", 
     data: new FormData(this), 
     processData: false, 
     contentType: false, 
     success: function (data, status) 
     { 
      $('#created').html(data); //content loads here 

     }, 
     error: function (xhr, desc, err) 
     { 
      console.log("error"); 

     } 
    });   

});