Вот мой плагин jquery print
(function ($) {
$.fn.printme = function () {
return this.each(function () {
var container = $(this);
var hidden_IFrame = $('<iframe></iframe>').attr({
width: '1px',
height: '1px',
display: 'none'
}).appendTo(container);
var myIframe = hidden_IFrame.get(0);
var script_tag = myIframe.contentWindow.document.createElement("script");
script_tag.type = "text/javascript";
script = myIframe.contentWindow.document.createTextNode('function Print(){ window.print(); }');
script_tag.appendChild(script);
myIframe.contentWindow.document.body.innerHTML = container.html();
myIframe.contentWindow.document.body.appendChild(script_tag);
myIframe.contentWindow.Print();
hidden_IFrame.remove();
});
};
})(jQuery);
Как вы сами обнаружили JSON не принимает двоичные данные, уловка заключается в том, чтобы закодировать BLOB - base64 , чтобы его можно было использовать в JSON , единственным недостатком является то, что вы должны декодировать его при извлечении JSON .
Вы можете использовать accessor
в вашей модели, чтобы иметь возможность автоматически кодировать поле BLOB-объекта , когда Модель сериализирована в [ 1121] JSON , то есть:
// in User Model
public function getBlobAttribute($value)
{
return base64_encode($value);
}
Необходимо запомнить , чтобы декодировать BLOB , когда вы используете его в качестве реальных двоичных данных (например, если это изображение), то есть:
$blob = base64_decode($model->blob)
Или вы можете написать метод, который извлекает BLOB-объект без , используя accessor
:
Надеюсь, это поможет.