2015-11-20 48 views
3

這是我的listview.aspx文件,它具有AJAX功能和listview控制器。我也救不了這樣的數據:無法使用ajax和linq保存數據到數據庫

$(function() { 
    var firstname = $('#fname').val(); 
    var lastname = $('#lanme').val(); 
    var education = $('#education').val(); 
    var email = $('#email').val(); 
    $('#submit').click(function() { 
     $.ajax({ 
      url: 'listview.aspx/Insert_data', 
      data: "{ 'First' : '" + firstname + "' , 'Last' : '" + lastname + "' , 'education' : '" + education + "' , 'Email' : '" + email + "' }", 
      type: 'POST', 
      async: false, 
      success: function (response) {       
       $('#fname').val(''); 
       $('#lanme').val(''); 
       $('#education').val(''); 
       $('#email').val(''); 
       alert('saved..'); 
      }, 
      error: function() { 
       alert("Error"); 
      } 
     }) 
    }) 
}) 

對於下面的列表控制:

<table> 
    <tr> 
     <td>FirstName:</td> 
     <td><input type="text" id="fname" /></td> 
    </tr> 
    <tr> 
     <td>Last:</td> 
     <td><input type="text" id="lname" /></td> 
    </tr> 
    <tr> 
     <td>Education:</td> 
     <td><input type="text" id="education" /></td> 
    </tr> 
    <tr> 
     <td>Email:</td> 
     <td><input type="text" id="email" /></td> 
    </tr> 
    <tr> 
     <td></td> 
     <td><input type="submit" id="submit" value="Submit" /></td> 
    </tr> 
</table> 
</div> 
<div> 
    <asp:ListView ID="lv1" runat="server"> 
    <LayoutTemplate> 
     <table id="tbl1"> 
      <tr> 
       <th>ID</th> 
       <th>FirstName</th> 
       <th>LastName</th> 
       <th>Education</th> 
       <th>Email</th> 
      </tr> 
      <tbody> 
       <asp:PlaceHolder ID="itemPlaceHolder" runat="server"></asp:PlaceHolder> 
      </tbody>     
     </table> 
    </LayoutTemplate> 
     <ItemTemplate> 
      <tr> 
      <td><%# Eval("Id") %></td> 
      <td><%# Eval("First") %></td> 
      <td><%# Eval("Last") %></td> 
      <td><%# Eval("education") %></td> 
      <td><%# Eval("Email") %></td> 
      </tr> 
     </ItemTemplate> 
    </asp:ListView> 
</div> 

這裏是我在listview.aspx.cs文件的方法:

[WebMethod(enableSession: true)] 
    public static bool Insert_data(string fname,string lname, string edu, string email) 
    { 
     databaseDataContext db = new databaseDataContext(); 
     db.Connection.ConnectionString = ConfigurationManager.AppSettings["dbConnect"]; 
     //tbl_employee tbl = new tbl_employee() 
     //{ 
     // First = fname, 
     // Last = lname, 
     // education = edu, 
     // Email = email 
     //}; 
     tbl_employee tbl = new tbl_employee(); 
     tbl.First = @firstname; 
     db.tbl_employees.InsertOnSubmit(tbl); 
     db.SubmitChanges(); 
     return true; 
    } 
} 

當我提交表單爲了保存數據,它會顯示一條警報,表示數據保存爲我在AJAX函數中寫入的內容,但事實上並非如此。

+0

是否得到你的控制器代碼? –

+0

沒有它的不MVC結構。我在談論ListView控制器在aspx頁面 – sadhana

回答

0

您是否嘗試將您的Insert_data函數更改爲具有與您從Ajax調用傳遞相同的輸入參數。

你的方法簽名是:

public static bool Insert_data(string fname,string lname, string edu, string email) 

但是你的Ajax調用傳遞:

data: "{ 'First' : '" + firstname + "' , 'Last' : '" + lastname + "' , 'education' : '" + education + "' , 'Email' : '" + email + "' }", 

你不會阻止提交按鈕的動作。更改代碼:

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

    // Prevent page postback. 
    e.preventDefault(); 

    // Ajax code here 

}); 

最後,我寧願傳遞一個對象,而不是大量的參數,因爲它允許容易維護的代碼。您可以更改正在使用的字符串參數,並用對象替換。

對象可以在JavaScript中設置:

var mFormData = { 
    FirstName: firstname, 
    LastName: lastname, 
    Education: education, 
    Email: email 
}; 

然後,您可以通過Ajax的通過這個調用數據屬性:

data: JSON.stringify(mFormData) 
+0

仍然沒有發生..ajax方法不工作..page正在回發。 – sadhana

+0

答案已經更新。 –