Tôi đang viết một ứng dụng web bằng Symfony 1.3. Tôi gặp vấn đề với các biến phiên của tôi bị mất sau khi tôi gọi một hành động thông qua cuộc gọi $.ajax()
của jQuery. Sự việc xảy ra theo thứ tự này:Symfony, jQuery.ajax() gọi, biến phiên bị mất
Một hành động thiết lập biến phiên như thế này:
$this->getUser()->setAttribute('uploaded-files', $uploadedFiles);
Sau đó, khi hành động kêu gọi các thành phần xem, kết quả trang HTML chứa các cuộc gọi sau đây:
$.ajax({ type: "POST", url: '<?php echo url_for("content/merge"); ?>', cache: false, success: mergingCompleteCallback });
Tôi nhấp vào nút kích hoạt cuộc gọi ajax ở trên. Cuộc gọi thực hiện phương thức hành động tương ứng, nhưng khi tôi in nội dung của biến phiên 'tệp đã tải lên', nó sẽ trống.
Tôi cũng đã kiểm tra xem id phiên có giữ nguyên giữa cuộc gọi đến trang đặt biến và trang đọc biến (cuộc gọi ajax) và id phiên không thay đổi hay không. Tôi đã tìm kiếm hàng giờ trực tuyến và tôi không thể tìm được giải pháp.
Bạn in nội dung ra sao và nội dung là gì? Khi yêu cầu ajax sử dụng cùng một cookie phiên như bất kỳ yêu cầu nào khác, không có lý do gì khiến các biến phiên của bạn bị mất trên Ajax và không phải trên các yêu cầu thông thường. – Gerry
Xin chào. Cuộc gọi AJAX chỉ trả về một đường dẫn đến một tập tin thông qua một cuộc gọi lại. Yêu cầu URL gọi một hành động gọi một hệ thống gọi pdftk (một số tham số) và sau đó trả về một cuộc gọi lại với đường dẫn đến tên tệp. Vấn đề mà tôi đang gặp phải là hành động đặt tại url_for ("nội dung/hợp nhất") không thấy biến phiên ($ this-> getUser() -> getAttribute ('attr_name');). Tuy nhiên, khi tôi chạy lệnh này bằng cách nhập trực tiếp URL vào trình duyệt, do đó không sử dụng AJAX, biến phiên được tải đúng cách. Đó là điều khiến tôi khó chịu. Tôi mong đợi hành vi tương tự mà bạn mô tả. Cảm ơn! – pkout
có thể bạn cookie phiên là httponly, là trường hợp này jquery không thể gửi nó. –