EDIT CUỐI CÙNG:MVC3 Ajax.BeginForm onSuccess Không Chạy trong Firefox
Sau khi làm theo câu trả lời từ Darin Dimitrov, tôi đã phát hiện ra rằng các vấn đề kết thúc lên được rằng cuộc gọi AJAX phương pháp của Controller UpdateForm()
là trả về một chuỗi rỗng. Đây là một sửa đổi mà tôi thấy cần thiết một thời gian trước đây sau khi gặp một vấn đề khác. Việc truyền một chuỗi rỗng đã khiến trình phân tích cú pháp của Firefox bị sặc (trong khi Chrome và IE không quan tâm, rõ ràng) vì vậy tôi đã thay thế chuỗi rỗng bằng một số trống rỗng div
.
Edit:
Nhờ gợi ý Darin Dimitrov của dưới đây, tôi đã phát hiện ra rằng lý do tôi đã gặp khó khăn là do một lỗi bị ném bất cứ khi nào hình thức trong câu hỏi đã được gửi đi.
Lỗi đọc "Node không thể được chèn vào điểm quy định trong hệ thống cấp bậc". Điều này được ném mỗi và mỗi lần biểu mẫu được gửi. Tôi nhận thấy trong dữ liệu POST có vẻ như nghĩ rằng đây là một XMLHttpRequest. Đó có phải là nguyên nhân (yêu cầu AJAX được đề cập chỉ trả về HTML) không? Đây là dữ liệu POST từ Firebug:
Lỗi này đọc "XML Parsing Error - Không Yếu tố Found".
FYI-HTML được trả lại luôn luôn là một chuỗi rỗng ...
Tôi có một ứng dụng MVC3 chạy trên IIS7. Trong một trong những quan điểm của tôi, tôi có một hình thức đang được xây dựng bằng cách sử dụng chức năng helper Microsoft HTML:
@using (Ajax.BeginForm("UpdateForm", new AjaxOptions { UpdateTargetId = "TargetDiv", InsertionMode = InsertionMode.InsertAfter, OnSuccess = "ClearTextBox" }))
{
@Html.TextArea("txtInput", new { id = "txtInput", cols = "20", rows = "5", wrap = "virtual" })
<input id="send" class="button" type="submit" value="Send"/><br />
}
này tạo ra HTML sau khi Controller cung cấp quan điểm này:
<form action="/RootName/ControllerName/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox" data-ajax-update="#TargetDiv" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
Những gì tôi cơ bản cố gắng làm ở đây là lấy văn bản bên trong TextArea
gọi txtInput
và gắn nó vào cuối Div
gọi TargetDiv
bất cứ khi nào nút Send
trên được nhấp và rõ ràng ra các văn bản từ txtInput
sau khi bổ sung hoàn thành bằng phương tiện của phương pháp ClearTextBox()
(Javascript). Phần bổ sung luôn hoạt động trong mọi trình duyệt; và khi tôi chạy trong Internet Explorer hoặc Chrome, việc xóa văn bản chỉ hoạt động tốt. Tuy nhiên, Firefox dường như không muốn gọi phương thức ClearTextBox()
.
Firefox không tương thích với tùy chọn data-ajax-success
này trong chữ ký biểu mẫu?
Những điều tôi đã thử
tôi thấy anh chàng này: Ajax.BeginForm doesn't call onSuccess
Giải pháp là để thêm kịch bản này:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
tôi kêu gọi kịch bản này :
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
... nhưng tôi đã thử đổi nó chỉ trong trường hợp. Không vui.
tôi đã được yêu cầu thử thay đổi các cuộc gọi phương pháp để bao gồm dấu ngoặc đơn bởi một số người trong C# trong chat room để HTML ra như thế này:
<form action="/WebChat/TMWC/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox()" data-ajax-update="#chatText" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
Nhưng điều đó không giúp đỡ.
The folks trong C# Trò chuyện cũng đề nghị tôi thay lời gọi Javascript với một cảnh báo - một cái gì đó như thế này:
<form action="/WebChat/TMWC/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="alert('yo!')" data-ajax-update="#chatText" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
Trong khi Chrome bật hộp tin nhắn, Firefox không!
"data-ajax-success" trông giống như thuộc tính tùy chỉnh chỉ cho biết phương thức cần gọi, vì vậy tôi nghi ngờ đó là vấn đề với chính thuộc tính. Tôi không chắc chắn những gì dev. các công cụ firefox có (tôi sử dụng Chrome chủ yếu), nhưng tôi sẽ kiểm tra xem nó có hiển thị bất kỳ lỗi JS nào ở nơi khác trong mã không. – justinb138
Tôi đang sử dụng Firebug nhưng nó đã không chỉ ra bất cứ điều gì cho tôi ... = ( –
Bạn có thể gửi cho bạn 'ClearTextBox()' phương pháp? Chỉ cần cố gắng này (file-> mới mvc3 dự án, sử dụng 'jquery.unobtrusive-ajax .min.js'), và hoạt động tốt trong FF Phiên bản của ClearTextBox của tôi là: 'function ClearTextBox() {$ (" # txtInput "). val (" ");}' –