2011-11-25 41 views
9

Trong ASP.Net MVC 3.0 tôi đang sử dụng một Ajax.BeginformASP.Net MVC 3.0 Ajax.BeginForm đang chuyển hướng đến một Trang?

và nhấn JsonResult về thành công của biểu mẫu tôi đang gọi một hàm jQuery. nhưng đối với một số lý do hình thức của tôi đang chuyển hướng tới JsonAction

Xem tôi


@using (Ajax.BeginForm("ActionName", "Controller", null, new AjaxOptions 
      { 
       HttpMethod = "POST", 
       OnSuccess = "ShowResult" 
      }, new { id = "myform" })) 
{ 
    // All form Fields 
    <input type="submit" value="Continue" class="button standard" /> 
} 

điều khiển của tôi


public JsonResult ActionName(FormCollection collection) 
{ 
    return Json(new { _status },JsonRequestBehavior.AllowGet); 
} 

jQuery


<script type="text/javascript"> 
function ShowResult(data) { 
    // alert("I am at ShowResult"); 
    if (data.isRedirect) { 
     window.location.href = json.redirectUrl; 
    } 
} 

vì lý do nào đó, khi tôi nhấp gửi. nó chạy JsonResult và chuyển hướng trang để lưu trữ/controller/actionname Tôi đã bao gồm tôi

<script src="@Url.Content("jquery.unobtrusive-ajax.min.js")"></script> 

trong layout.cshtml tôi

bất kỳ ai có thể cho tôi biết những gì có thể xảy ra?

Tôi đã tìm thấy sự cố. Bây giờ tôi phải tìm ra giải pháp trên nộp Tôi xác nhận hình thức của tôi

$("#myform").validate({ 
    submitHandler: function (form) { 
    // my logic goes here.... 
}}); 

Nếu tôi loại trừ hình thức xác nhận Ajax làm việc như mong đợi. Nhưng nếu tôi xác nhận hình thức của tôi thì hình thức ajax không hoạt động như mong đợi Cảm ơn

+0

Gọi lại javascript của bạn có được gọi không? Bạn đã kiểm tra với fiddler, rằng đối tượng JSon của bạn được trả lại chính xác cho trình duyệt? Những gì bạn có nghĩa là excactly với * chuyển hướng đến JsonAction *? – Jan

+0

tập lệnh java của tôi nằm trong cùng một trang. Bởi vì nó đang chuyển hướng đến trang khác. JavaScript không thể được gọi. và có đối tượng Json của tôi được trả về như mong đợi. tôi thấy kết quả json trong trang được chuyển hướng mới – HaBo

Trả lời

18

khi điều này xảy ra nó hầu như luôn luôn vì file kịch bản của bạn không được nạp

lưu ý từ:

http://completedevelopment.blogspot.com/2011/02/unobstrusive-javascript-in-mvc-3-helps.html

  1. Đặt cờ được đề cập trong web.config:
    1. Bao gồm một refere nce vào thư viện jQuery ~/Scripts/jquery-1.4.4.js
    2. Bao gồm một tham chiếu đến thư viện mà móc kỳ diệu này tại ~/Scripts/jquery.unobtrusive-ajax.js

Vì vậy, tải lên fiddler http://fiddler2.com và xem liệu các kịch bản đang được gọi và tải.

+0

Tôi thấy sự cố tất cả tập lệnh của tôi đang trỏ chính xác.Vấn đề là với thẻ id nếu tôi đưa thẻ id html vào biểu mẫu thì điều này không hoạt động. nếu tôi lấy ID thì biểu mẫu Ajax hoạt động như mong đợi. Nhưng tôi cần thẻ ID của tôi cho hình thức Ajax như tôi đang xác nhận nó với nó. – HaBo

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