2013-08-20 27 views
7

Tôi xin lỗi trước nếu điều này đã được trả lời. Tôi đã Googled xung quanh trong một vài giờ, và tôi vẫn chưa tìm thấy bất cứ điều gì dường như để trả lời câu hỏi chính xác của tôi.Chuyển đối tượng JSON lớn đến một trang khác trong cửa sổ mới.

Về cơ bản, tôi có chế độ xem rất phức tạp/có kiểu dáng cao hiển thị dữ liệu người dùng cụ thể được lấy từ cơ sở dữ liệu. Tôi đã thu thập dữ liệu dưới dạng đối tượng JSON, đính kèm nó vào cơ thể trang của tôi bằng cách sử dụng .data(). Tôi đã thêm một nút để truy lục đối tượng JSON và mở trang thân thiện với máy in của tôi trong một cửa sổ mới. Tôi muốn có thể truy cập/thao tác đối tượng JSON người dùng cụ thể từ trong cửa sổ mới này. (Tất cả điều này sẽ nằm trên cùng một tên miền.)

Hầu hết các giải pháp mà tôi thấy dường như tập trung xung quanh việc mở một cửa sổ mới, trống. Tôi không muốn làm điều đó. Tôi đã mã hóa một bố trí cho trang, và tôi có kế hoạch có javascript/css mà cũng chạy. Tôi đã nhìn thấy các giải pháp liên quan đến việc mở một cửa sổ mới và sau đó sử dụng document.write, điều này sẽ rất tuyệt, nếu có cách nào để nhắm mục tiêu một phần tử cụ thể trên trang mới. Tôi đã thử, ví dụ:

x = window.open(url); 
x.document.write(myJson); 

Đặt đối tượng JSON trên trang mới, nhưng xóa hoàn toàn mọi thứ khác tôi đã có trong bố cục.

Tôi cũng đã thấy các giải pháp đề xuất xâu chuỗi và sau đó Base64 mã hóa đối tượng. Nhưng tôi lo ngại về các giới hạn độ dài URL, vì chúng có khả năng thu thập nhiều dữ liệu trên trang này trước khi nhấp vào nút.

Tôi cũng đã thấy các giải pháp đề xuất sử dụng bộ nhớ cục bộ HTML5. Mà tôi cho là tôi sẽ làm, nếu không có giải pháp tốt hơn. Tuy nhiên HTML5 làm tăng các vấn đề tương thích với trình duyệt và tôi muốn tránh chúng nếu có thể.

Dưới đây là một số mã ví dụ:

JSON đối tượng:

{ 
{ 
"name":"Percy Pea.", 
"bio":"Percy Pea was born in a pod, and lived there happily." 
}, 
{ 
"name":"James Cob", 
"bio":"James Cob was arrested for stalking." 
} 
} 

tôi chụp khi nó trở lại từ máy chủ là 'dữ liệu':

$("body").data("userData", data); 

Trong onclick của tôi cho nút trang thân thiện với máy in, tôi truy xuất đối tượng JSON:

var userData = $("body").data("userData"); 

Vậy điều này có thể thực hiện được không? Có cách nào để mở một cửa sổ mới, và sau đó chèn/đính kèm dữ liệu vào một phần tử cụ thể bên trong nó? Hoặc ... có lẽ một số cách khác mà tôi chưa từng cân nhắc.

Cảm ơn bạn đã giúp đỡ, mặc dù tôi cũng chắc chắn sẽ đánh dấu chọn câu trả lời, sau khi đăng câu trả lời.

Trả lời

4

bạn có thể lưu json trong biến toàn cầu trong cửa sổ phụ huynh và tham khảo nó trong cửa sổ bật lên cửa sổ của bạn đang

https://stackoverflow.com/a/87737/1755374

+0

Hah, bạn là người giỏi nhất. Đối với bất kỳ ai khác tình cờ trên trang này, tôi đã có thể sử dụng dòng:.. var userData = window.opener $ ("cơ thể") dữ liệu ("userData"); Trong tệp javascript của trang được mở trong cửa sổ mới. Điều này đã truy xuất thành công đối tượng JSON. –

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