2009-10-14 5 views
2

UGH.отправьте данные формы в iframe через сообщение [загрузка файла]

Hi.

У меня есть форму. Я хотел бы знать, как/если я могу отправить эту форму в iFrame, на которой есть страница, которая будет обрабатывать загрузку/именование файлов.

Если я попробую даже что-то простое, как сообщение ввода/текста в форму, ничего не происходит (обработчик настроен на эхо-значение $ _POST). Я попытался установить имя iframe/id et. и др. и установление целевого объекта формы в соответствующее имя/id iframe. Когда я нажимаю submit, iframe просто сидит там, как манекен. WTF я делаю неправильно?

Thx.

<form action="/clients/testAddTrans/<?=$clientID?>" id="reportEdit" class="EditName" method="POST" target="transFrame"> 
    <div class="inputDiv"> 
     <span class="inputLabel">Description:</span> 
     <span class="textInput"> 
      <input type="text" id="transDesc" name="transDesc" value="" size="40" class=""/> 
     </span> 
    </div> 
    <div class="inputDiv"> 
     <span class="inputLabel">Date:</span> 
     <span class="textInput"> 
      <input type="text" id="date" name="transDate" value="" size="40" class=""/> 
     </span> 
    </div> 
    <div class="inputDiv"> 
     <span class="inputLabel">File:</span> 
     <span class="textInput"> 
      <input type="file" id="file" name="transFile" value="" size="40" class=""/> 
     </span> 
    </div> 
    <input name="name_id" type="hidden" value="<?=$itemid?>" /> 
    <input type="submit" value="Submit" name="submit"/> 
    <input type="button" class="secondaryAction" onclick="hideOverDiv()" value="Close"/> 
    <div id="overDivNotice" class="overDivNotice" style="display:none"></div> 
    <iframe action="/clients/testAddTrans/<?=$clid?>" id="transFrame" name="transFrame" style=""></iframe> 
</form> 

Сгенерированный HTML с помощью поджигателя:

<div class="content" id="overDivContent"><div class="inputDivContainer"> 
    <fieldset class="inputOverDiv" id="tfa_Names"> 
<legend><b>Add Transmittal:</b></legend> 
    <div class="data"><form target="transFrame" method="POST" class="EditName" id="reportEdit" action="/clients/testAddTrans/fsdf1556"><div class="inputDiv"><span class="inputLabel">Description:</span><span class="textInput"><input type="text" class="" size="40" value="" name="transDesc" id="transDesc"/></span></div><div class="inputDiv"><span class="inputLabel">Date:</span><span class="textInput"><input type="text" class="" size="40" value="" name="transDate" id="date"/></span></div><div class="inputDiv"><span class="inputLabel">File:</span><span class="textInput"><input type="file" class="" size="40" value="" name="transFile" id="file"/></span></div><input type="hidden" value="121" name="name_id"/> 
    </form><br/> 
    <div align="center" class="actions" id="overDivActions"> 
    <input type="submit" name="submit" value="Submit"/> 
    <input type="button" value="Close" onclick="hideOverDiv()" class="secondaryAction"/> 
    </div> 
    <div style="display: none;" class="overDivNotice" id="overDivNotice"> 
    </div></div> 


    <iframe style="" name="transFrame" id="transFrame">tyh</iframe> 
    </fieldset> 
    </div></div> 

Я не знаю, почему это ставит </form> тега, где это .. Предполагается, что после фрейма, но независимо от того. Это даже имеет значение? Предполагается ли, что iframe находится внутри формы?

+0

Можете ли вы дать нам HTML, а не PHP? То, что у вас выглядит нормально (хотя в iframe нет атрибута действия - вы имели ввиду src?) – Greg

+0

Да, я имел в виду src. Я добавил, что, когда я печатал здесь, и пошарил. – stormdrain

+0

Вы уверены, что это не ошибка с testAddTrans? – Greg

ответ

6

Приятно, я ошибся .. Я нашел проблему. Первое использование html для записи html; С кодом ниже работ:

для 'testSubmitiFrame.html':

<form target="transFrame" method="POST" class="EditName" id="reportEdit" action="testSubmitiFrame.php"> 
<div class="content" id="overDivContent"> 
    <div class="inputDivContainer"> 
     <fieldset class="inputOverDiv" id="tfa_Names"> 
     <legend><b>Add Transmittal:</b></legend> 
     <div class="data"> 
      <div class="inputDiv"> 
       <span class="inputLabel">Description:</span> 
       <span class="textInput"><input type="text" class="" size="40" value="" name="transDesc" id="transDesc"/></span> 
      </div> 
      <div class="inputDiv"> 
       <span class="inputLabel">Date:</span> 
       <span class="textInput"><input type="text" class="" size="40" value="" name="transDate" id="date"/></span> 
      </div> 
      <div class="inputDiv"> 
       <span class="inputLabel">File:</span> 
       <span class="textInput"><input type="file" class="" size="40" value="" name="transFile" id="file"/></span> 
      </div> 
      <input type="hidden" value="121" name="name_id"/> 
      <br/> 
      <div align="center" class="actions" id="overDivActions"> 
       <input type="submit" name="submit" value="Submit"/> 
       <input type="button" value="Close" onclick="hideOverDiv()" class="secondaryAction"/> 
      </div> 
      <div style="display: none;" class="overDivNotice" id="overDivNotice"></div> 
     </div> 
     </fieldset> 
    </div> 
</div> 
</form> 
<iframe style="" name="transFrame" id="transFrame">tyh</iframe> 

для 'testSubmitiFrame.php':

<?php 
var_dump($_POST); 
?> 

Ваша проблема заключается в HTML синтаксис. Это работает.

+0

+1 для enctype, но -1, потому что вы можете использовать POST с iframes – Greg

+0

Прямо сейчас, я не забочусь о файле. Я даже не могу заставить его перекликаться с текстовыми полями. – stormdrain

0

Ваша логика действительна, можете ли вы настроить тестовую страницу?

+0

Нет, это локально. – stormdrain

0

Эта страница будет делать то, что вы хотите, так что вы можете посмотреть через него и посмотреть, что может отличаться от того, что вы уже делаете: http://www.anyexample.com/programming/php/php_ajax_example__asynchronous_file_upload.xml

Является ли действие в HTML PHP-файл, который будет сделать обработку?

+0

Я посмотрел на это. Проблема в том, что я использую прототип, и он конфликтует с такими же 30 милями кода, который я уже написал. И jQuery.noconflict() - toMe.noHelp() – stormdrain

+0

Часть javascript не должна быть большой проблемой, вам просто нужно сделать подачу при нажатии кнопки и игнорировать проверку. Вы можете получить часть javascript маленькой и просто исправить ее, чтобы использовать прототип. –

1

Очевидно, что тег div или тупого места был неуместным, препятствуя работе этой вещи. Я действительно должен начать проверять свой код, прежде чем беспокоить вас хорошими людьми.

Спасибо в любом случае.

0

Я думаю, что это из-за этих двух линий:

echo "</div>"; 
echo "</div><br> 

Вы закрытия <div> без каких-либо открытия тегов. Это заставляет Firefox закрыть <form> раньше - ваша кнопка отправки не находится внутри вашей формы, поэтому она не работает.

Позиция iframe внутри или вне формы не имеет значения - просто убедитесь, что остальная часть HTML действительна, и она должна работать.

Смежные вопросы