2012-07-31 43 views
6

Tôi sắp rút ra bất kỳ phần tóc còn lại nào mà tôi có, vì vậy hãy giúp tôi nếu bạn biết vấn đề có thể là gì ... Cảm ơn. Tất cả các googling và tìm kiếm của tôi đã không được trả hết.jquery ajax với asp.net không hoạt động

Trước tiên, tôi đang sử dụng biểu mẫu web jquery-1.7.2.min.js và ASP.net 2.0.

Tôi đang cố thực hiện cuộc gọi ajax bằng jquery nhưng vẫn nhận được thông báo lỗi lỗi/phân tích lỗi cú pháp. Tôi đã thử nhiều cách khác nhau nhưng tất cả đều dẫn đến lỗi khi tôi đặt dataType thành json.

Dưới đây là những gì tôi có:

$.ajax({ 
    type: "POST", 
    url: "UserList.aspx/GetTestJson", 
    data: {}, //have also tried "{}" and other options such as removing the line 
    contentType: "application/json;charset=utf-8", 
    dataType: "json", 
    success: function(data, textStatus, jqXHR){ 
     alert('success'); 
    }, 
    //Using below instead of above makes no difference either 
    //success: function(data){ 
    // alert('success'); 
    //}, 
    error: function(jqXHR, textStatus, errorThrown){ 
     alert('errorThrown: ' + errorThrown); 
    } 
}); 

và phương pháp trang aspx:

[WebMethod] 
public static string GetTestJson() 
{ 
    return "Hello My World"; 
} 

Tôi đã cố gắng thiết lập một dịch vụ web quá, nhưng có được kết quả tương tự. Có vẻ như phản hồi quay lại là html đầy đủ cho trang hoặc xml từ dịch vụ web và bởi vì tôi đặt dataType thành json, nó không thành công trong việc phân tích cú pháp nó. Nếu trường hợp này xảy ra, làm cách nào để đặt phản hồi chỉ trả về json?

Đây là cái gì khác tôi đã cố gắng mà không may mắn: thông điệp

[WebMethod] 
public static string GetTestJson() 
{ 
    HttpContext.Current.Response.ContentType = "application/json"; 
    string json = JavaScriptConvert.SerializeObject("Hello My World"); 
    return json; 
} 

Lỗi tôi nhận được thông qua jQuery:

errorThrown.message = "Syntax error" 
errorThrown.number = -2146827286 
errorThrown.name = "SyntaxError" 
textStatus = "parseerror" 
jqXHR.status = 200 
jqXHR.statusText = "OK" 
jqXHR.readyState = 4 
jqXHR.responseText = (the complete html of the page) 

Bất kỳ ý tưởng hoặc đề nghị?

Cảm ơn

+0

Chỉ đặt tiêu đề HTTP kiểu nội dung không thực sự thay đổi nội dung phản hồi. Bạn cần tự chuyển đổi dữ liệu sang JSON. Ngoài ra, [WebMethod] thường được sử dụng cho các dịch vụ SOAP, chứ không phải các dịch vụ web kiểu RESTful. – Dai

+1

Đó là một phần đúng, PageMethods được sử dụng cụ thể trong các tình huống AJAX, họ đặt kiểu phản hồi thành json theo mặc định – Jupaol

+0

Bạn có thể đăng lỗi chính xác mà bạn đang nhận được – Jupaol

Trả lời

12

Cảm ơn bạn @DaveWard và @CodeRoller giúp đỡ của bạn dẫn đến giải pháp này:

  1. Cài đặt ASP.NET Ajax Extensions (HERE)
  2. Thêm tham chiếu đến System.Web. Extensions.dll
  3. Sửa web.config để bao gồm các ScriptModule HttpModule (xem dưới đây)

Cuộc gọi jQuery ajax của tôi và WebMethod vẫn giống như bài viết gốc của tôi.

web.config của tôi đã được sửa đổi như sau:

<system.web> 
    <compilation debug="true"> 
     <assemblies> 
     <!-- A bunch of other assemblies here--> 
     <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     <add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </assemblies> 
    </compilation> 
    <httpModules> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
    </httpModules> 
    </system.web> 

Tôi hy vọng ai đó sẽ tìm thấy điều này hữu ích.

+0

Bài đăng của bạn giúp tôi gửi json tới ứng dụng web ASP.NET 2.0 của tôi! Cảm ơn! – Roman

+0

@PostureOfLearning Chỉ Nếu tôi có thể cung cấp cho bạn hàng ngàn upvotes !! –

+3

@SurajSingh Bạn được chào đón nhiều nhất. Tôi rất vui vì bài đăng có thể giúp người khác. Tôi đã đi hạt với vấn đề này quá ... =) – PostureOfLearning

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