Создайте iframe при нажатии кнопки / ссылки и добавьте это в тело.
$('<iframe />')
.attr('src', url)
.attr('id','iframe_download_report')
.hide()
.appendTo('body');
Создайте iframe с задержкой и удалите его после загрузки.
var triggerDelay = 100;
var cleaningDelay = 20000;
var that = this;
setTimeout(function() {
var frame = $('<iframe style="width:1px; height:1px;" class="multi-download-frame"></iframe>');
frame.attr('src', url+"?"+ "Content-Disposition: attachment ; filename="+that.model.get('fileName'));
$(ev.target).after(frame);
setTimeout(function() {
frame.remove();
}, cleaningDelay);
}, triggerDelay);
Простой ответ: нет. Вам придется пройти долгий путь с if / else. Также было бы редко и, возможно, запутать один раз ссылку, а в следующий раз - значение. Я бы нашел это более интуитивно понятным, но опять же, я, конечно, не знаю вашего кода:
if(!isset($_SESSION['foo'])) $_SESSION['foo'] = false;
$x = &$_SESSION['foo'];
Относительно того, почему: не знаю, вероятно, это связано с тем, в какой момент синтаксический анализатор считает что-то копией значения или создания ссылки, которая таким образом не может быть определена на этапе синтаксического анализа.
В очень простом случае это выражение, которое является недопустимым;
$c = condition ? &$a : &$b; // Syntax error
можно записать так:
$c = &${ condition ? 'a' : 'b' };
В вашем конкретном случае, так как вы не При назначении по ссылке, если условие ложно, лучшим вариантом представляется:
$x = isset( В очень простом случае это выражение, которое является недопустимым;
[110] можно записать так:
[111] В вашем конкретном случае, так как вы не При назначении по ссылке, если условие ложно, лучшим вариантом представляется:
[112]SESSION['foo']) ? $x = & В очень простом случае это выражение, которое является недопустимым;
[110] можно записать так:
[111] В вашем конкретном случае, так как вы не При назначении по ссылке, если условие ложно, лучшим вариантом представляется:
[112]SESSION['foo'] : false;
Давайте попробуем:
$x =& true?$y:$x;
Parse error: syntax error, unexpected '?', expecting T_PAAMAYIM_NEKUDOTAYIM in...
$x = true?&$y:&$x;
Parse error: syntax error, unexpected '&' in...
Итак, вы видите, он даже не анализирует. Wikken, вероятно, прав в том, почему это не разрешено.
Вы можете обойти это с помощью функции:
function &ternaryRef($cond, &$iftrue, &$iffalse=NULL) {
if ($cond)
return $iftrue;
else
return $iffalse;
}
$x = 4;
$a = &ternaryRef(true, $x);
xdebug_debug_zval('a');
$b = &ternaryRef(false, $x);
xdebug_debug_zval('b');
дает:
a:
(refcount=2, is_ref=1),int 4b:
(refcount=1, is_ref=0),null
К сожалению, вы не можете.
$x=false;
if (isset($_SESSION['foo']))
$x=&$_SESSION['foo'];