2010-05-11 30 views
5

Tôi hiện đang sử dụng jquery ajax để gọi một pagemethod (hoạt động tốt);Truy cập webmethod với jquery

$.ajax({ 
      type: "POST", 
      url: "ArticleList.aspx/GetArticleTags", 
      data: "{'articleId' : " + articleId + "}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
      if (msg.hasOwnProperty("d")) { msg = msg.d; } 
      var tags = JSON.parse(msg); 
      //do something 
      } 
     }); 

Từ xa;

<WebMethod()> 
    Public Shared Function GetArticleTags(ByVal articleId As Integer) As String 
    Using myDb As New MyRepository 
     Dim js As New JavaScriptSerializer 
     Dim returnString = js.Serialize((From t In myDb.GetArticleTags(articleId) Select t.TagId, t.Tag).ToList) 
     Return returnString 
    End Using 
    End Function 

Tôi hiện đang ở vị trí mà tôi cần truy cập chức năng GetArticleTags từ nhiều trang. Để nhanh chóng thiết lập và chạy, tôi có thể

  1. Sao chép chức năng vào trang aspx mới của tôi và gọi nó theo cùng một cách.
  2. Tiếp tục trỏ đến trang aspx gốc.

Cả hai đều khá là rác rưởi.

Vì vậy, cách hợp lý duy nhất còn lại là gọi phương thức wcf (webget). Điều này sẽ có lợi ích của ý nghĩa tôi sẽ không phải tự serialize các đối tượng để json. Nó sẽ được thực hiện cho tôi.

Tôi có một webservice an toàn trong giải pháp đã có, nhưng tôi cảnh giác về việc gọi nó từ webapp của tôi. Tôi muốn tất cả các mã sống trong webapp của tôi, không phụ thuộc vào một dịch vụ web mà sẽ được trong một hồ bơi ứng dụng khác nhau trên cùng một máy chủ iis. Nó có thể cần phải được bắt đầu lạnh, và tôi cần điều này để được nhanh chóng.

Tôi đã thêm tệp wcf vào ứng dụng web của mình bằng mẫu "Dịch vụ WCF bật AJAX". Nhưng sau đó bằng cách làm điều này, tôi muddying lên webapp của tôi với các thiết bị đầu cuối trong web.config vv (và tôi hiện đang nhận được 500 System.ServiceModel.ServiceActivationException ngoại lệ của)

Vì vậy, xuống câu hỏi của tôi ... Cách tốt nhất để gọi hàm của tôi là gì? (Tôi nghĩ đó là dịch vụ web an toàn của tôi) Có tùy chọn nào khác mà tôi không xem xét không?

Cảm ơn nhiều.

Trả lời

2

Bạn nên tạo dịch vụ ASMX hỗ trợ AJAX hoặc sử dụng trình xử lý ASHX thông thường.

Nếu bạn tạo trình xử lý ASHX, bạn sẽ cần phải tự xử lý và phân tích cú pháp; Tôi khuyên bạn nên sử dụng dịch vụ ASMX, có thể cực kỳ giống với phương pháp trang của bạn.

+0

Tôi đã thực sự creaste như asmx dịch vụ .... nhưng sau đó nghĩ nahhhh, và kịp thời xóa nó nó (wcf luôn luôn thắng trên asmx cho tôi những ngày này [nhưng cho các dịch vụ web thích hợp]). Nhưng có lẽ là đúng, nó sẽ là giải pháp * tốt nhất * trong tình huống của tôi. – GordonB

Các vấn đề liên quan