2009-09-23 33 views
6

Tôi đang học asp.net mvc bằng cách làm việc trên một dự án thử nghiệm bao gồm SubSonic và jQuery. Vấn đề mà tôi đang gặp phải là mỗi khi tôi muốn trả lại một cái gì đó nhiều hơn một chuỗi đơn giản, giống như một đối tượng Json, tôi bị cản trở bởi vì những lời gọi lại dường như không cháy, hoặc quay trở lại như thất bại.getJSON Callback Not Firing

Phương pháp của tôi để có được một danh sách các công việc trong cơ sở dữ liệu:

[AcceptVerbs(HttpVerbs.Get)] 
    public JsonResult GetAllJobs() 
    { 
     var db = new JamesTestDB(); 
     var jobs = from job in db.Jobs 
        select job; 

     return Json(jobs.ToList()); 
    } 

Và JavaScript của tôi để gọi nó là:

function updateJobList() { 
     var url = '<%= Url.Action("GetAllJobs", "Home") %>'; 

     $.getJSON(url, null, function(data, status) { alert("Success!"); }); 
    } 

Tôi đã chơi xung quanh với get, bưu chính getJSON sử dụng cả định nghĩa hàm nội tuyến và bên ngoài để thành công và thất bại. Không có gì có vẻ hiệu quả, nhưng mã chắc chắn đang thực hiện cuộc gọi Ajax, chỉ không kích hoạt cuộc gọi lại.

+0

đây có phải là tên miền chéo getJSON (tức là JSONP) hoặc cùng một tên miền không? – seth

Trả lời

0

jQuery có error handler mà bạn có để ràng buộc nếu bạn muốn xem các lỗi:

$("#msg").ajaxError(function(event, request, settings){ 
    $(this).append("<li>Error requesting page " + settings.url + "</li>"); 
}); 
0

Các bạn đã thử:

$ .getJSON (url, chức năng (dữ liệu, tình trạng) {alert ("Sự thành công!"); });

và đồng thời, kiểm tra URL đang giải quyết chính xác bằng cách thực hiện:

cảnh báo (url);

trước khi cuộc gọi kiểm tra xem có đúng không.

Sau đó kiểm tra phản hồi trên cửa sổ bảng điều khiển của Firebug trong Firefox.

0

Sự cố nằm ở đâu đó trong những gì tôi đang quay trở lại. Dường như việc đẩy các loại vô danh vào Json() dường như làm cho nó lộn xộn bằng cách nào đó. Bằng cách định nghĩa một lớp đơn giản và đẩy các giá trị vào một thể hiện mới của nó, tôi đã nhận nó trở lại một cách chính xác.

12

Đây là giải pháp !!

Vì vậy, nó quay ra tôi đã làm một cách chính xác như nhau trong hơn một năm:

public JsonResult SaveData(string userID, string content) 
{ 
    var result = new { Message = "Success!!" }; 

    return Json(result); 
} 

Vì vậy, tôi bắt đầu để làm điều đó theo cùng một cách trên một dự án mới, tôi bắt đầu lên. Vâng, sự khác biệt? Đầu tiên là MVC 1.0, và cái mới của tôi là MVC 2.0. Vậy sự khác biệt là gì? Bạn phải cho phép các yêu cầu JSON GET:

public JsonResult SaveData(string userID, string content) 
{ 
    var result = new { Message = "Success!!" }; 

    return Json(result, JsonRequestBehavior.AllowGet); 
}