2010-12-20 64 views
2

我使用jQuery所以使用ajax發佈數據,但由於某種原因,當我點擊提交,頁面不從aspx到aspx.vb在背面。 這裏是我的代碼 -ajax發佈方法不工作在vb.net

$(document).ready(function() { 
     $("#btnsave").click(function() { 
      var firstname = $("#" + '<%=firstname.ClientID%>').val(); 
      $.ajax({ 
       type: "POST", 
       url: "student.aspx/new_class", 
       data: "firstname="+ firstname + ";", 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function() {      
       } 
      }); 
     }); 
    }); 

new_class是我在vb.net側的WebMethod。現在,如果我在btnsave onclick函數中添加了一個警報,我會看到警報中的名字值。但是頁面在那之後不會調用new_class函數。 任何想法我錯了?

+0

什麼是在服務器端設置解釋'somepage.aspx/somemethod'作爲頁面的方法調用?..這不是ASP.net的本地功能。 – 2010-12-20 18:07:10

+0

兩件事:1)您的網站方法URL看起來很奇怪。這可能是一箇舊的IIS或其他性質的MVC實現嗎? 2)當您手動調用該URL(在客戶端和服務器上)時會發生什麼? – David 2010-12-20 18:13:32

+0

每當我接受,它會告訴我登錄,即使我已經登錄。反正,Quintin,你說我的設置是錯誤的。你能指導我寫一些文檔嗎,所以我可以解決這個問題嗎?它的IIS7與asp.net和vb.net在後面。沒有MVC。我唯一的目標是將數據傳遞給後端代碼。如果有人覺得另一種方法更好,請告訴。 – weoiol 2010-12-20 18:18:55

回答

2

該URL對於映射到服務器端代碼上的方法是不正確的。

我假設你正打算在student.aspx.vb中調用一個名爲new_class的方法。它是否正確?

你想要做的是爲這個請求創建一個單獨的頁面。也許像student_ajax.aspx或類似的東西。你如何組織它取決於你。最簡單的做法是讓邏輯new_class成爲新頁面中的Page_Load邏輯。在該方法中,您將生成JSON(假設您正在手動且正確地執行此操作,但如果出現這種情況,則返回不同的問題)返回到客戶端。

但是,請注意,在該頁面中,您需要做一些技巧。首先,擺脫頁面本身的所有HTML。您只想返回 JSON,不包含在任何HTML中。然後,當你在生成代碼隱藏邏輯響應字符串,你要的標題設置爲正確的頭文件和輸出的字符串:

Response.Clear() 
Response.ContentType = "application/json" 
Response.Write(myJSONString) 
Response.End() 

請注意,這是所有的寫意,所以有可能是這個實現中的一個或兩個細節。而我知道有更優雅的方式來做到這一點。我相信你可以在Google上找到一兩個教程。基本上你要做的就是在服務器上創建一個自定義處理程序,以處理返回JSON數據的AJAX請求。