2009-10-12 26 views
11

Chúng tôi có giải pháp Sharepoint sử dụng AJAX. Nút kích hoạt tính năng này nằm trong bảng điều khiển cập nhật.Cách sửa lỗi: Không thể phân tích cú pháp thư nhận được từ máy chủ

Một trong những điều chúng tôi làm là tạo tài liệu MS Word, sau đó được mở trên máy khách để có thể in.

Mã sẽ gửi tài liệu cho khách hàng như sau:

void OpenFileInWord(byte[] data) 
    { 
     Response.Clear(); 
     Response.AddHeader("Content-Type", "application/msword"); 
     Response.BinaryWrite(data); 
     Response.Flush(); 
     Response.End(); 
    } 

Các lỗi mà chúng ta đang nhận được là:

Message: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled. Details: Error parsing near '<?mso-application pr'.

Chúng ta có thể lưu các tài liệu Sharepoint đầu tiên, và sau đó mở nó từ Sharepoint, nhưng chúng tôi không muốn làm điều này.

Trả lời

17

Hành động khiến mã này thực thi PHẢI là sự kiện postback chứ không phải cuộc gọi AJAX.

Điều này là do bản chất của cách yêu cầu AJAX được xử lý.

1

Khi nhấp vào nút, hãy chuyển hướng đến một trang khác có thể truyền bất kỳ tệp nào mà bạn có thể muốn thực hiện loại điều này. Chúng tôi sử dụng trang document.aspx ở nhiều trang web của chúng tôi và sau đó chuyển một id tài liệu qua chuỗi truy vấn và truyền tệp từ đó.

Trong ví dụ của bạn, bạn đang cố gắng thay đổi về cơ bản các tiêu đề cho một trang nào đó đã được hiển thị mà không được phép

+0

'Trong ví dụ của bạn, bạn về cơ bản cố gắng thay đổi các tiêu đề cho một trang nào đó đã được hiển thị mà không được phép'. Nó được cho phép, không cần một trang riêng cho nó. –

6

Giữ nút của bạn bên ngoài bảng cập nhật. Sau đó, nó hoạt động tốt.

28

Nếu bạn có nút bên trong updatepanel, điều này có thể gây ra điều này, nếu bạn không muốn di chuyển nó, chỉ cần thêm trình kích hoạt cho nút trên updatepanel, trình kích hoạt postback.

+0

Câu trả lời hay. Vấn đề của tôi đã được giải quyết. Cảm ơn đề xuất của bạn. –

+0

Vấn đề của tôi cũng đã được giải quyết, cảm ơn bạn rất nhiều !! – MBahamondes

0

Tôi đã xóa bảng cập nhật xung quanh nút và nó hoạt động tốt.

+0

Đã có giải pháp cho câu hỏi này không yêu cầu bất kỳ thay đổi kiến ​​trúc quan trọng nào đối với ứng dụng. –

1

Đối với tôi, sự cố là ID kiểm soát trùng lặp trong cột mẫu của chế độ xem lưới. Khi tôi đổi tên các điều khiển thành lưới duy nhất, vấn đề đã biến mất!

1

Hãy thử thêm quản lý kịch bản trong tải trang của bạn, như thế này:

((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(btnExport); 
1

Tôi đã có một asp: Bảng điều khiển bên trong một asp: kiểm soát UpdatePanel. Bảng có một số hàng tĩnh và một số hàng đã được thêm vào trong sự kiện Postback.

Lỗi này xảy ra do các hàng và cột của bảng không có ID tĩnh. Vì vậy, ID đã thay đổi ở mỗi lần đăng lại và nguyên nhân này gây ra sự cố với khôi phục ViewState cho bảng.

Để ngăn chặn lỗi này tôi ViewState tàn tật cho bảng: EnableViewState = "false"

<asp:Table ID="PageContentTable" runat="server" ... EnableViewState="false">

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