Использование тега Form для изменения URL-адреса в приложении с одной страницей [duplicate]

, если мы знаем имена таблиц и столбцов, но хотим узнать количество строк, появляющихся для каждой схемы:

Declare

owner VARCHAR2(1000);
tbl VARCHAR2(1000);
cnt number;
ct number;
str_sql varchar2(1000);
reason varchar2(1000);
x varchar2(1000):='%string_to_be_searched%';

cursor csr is select owner,table_name 
from all_tables where table_name ='table_name';

type rec1 is record (
ct VARCHAR2(1000));

type rec is record (
owner VARCHAR2(1000):='',
table_name VARCHAR2(1000):='');

rec2 rec;
rec3 rec1;
begin

for rec2 in csr loop

--str_sql:= 'select count(*) from '||rec.owner||'.'||rec.table_name||' where CTV_REMARKS like '||chr(39)||x||chr(39);
--dbms_output.put_line(str_sql);
--execute immediate str_sql

execute immediate 'select count(*) from '||rec2.owner||'.'||rec2.table_name||' where column_name like '||chr(39)||x||chr(39)
into rec3;
if rec3.ct <> 0 then
dbms_output.put_line(rec2.owner||','||rec3.ct);
else null;
end if;
end loop;
end;
62
задан 19 May 2010 в 14:49
поделиться

16 ответов

Вам необходимо отправить запрос ajax для отправки электронной почты без перезагрузки страницы. Взгляните на http://api.jquery.com/jQuery.ajax/

Ваш код должен быть чем-то вроде строк:

$('#submit').click(function() {
    $.ajax({
        url: 'send_email.php',
        type: 'POST',
        data: {
            email: 'email@example.com',
            message: 'hello world!'
        },
        success: function(msg) {
            alert('Email Sent');
        }               
    });
});

Форма будет отправлена ​​в фоновом режиме на страницу send_email.php, которая должна будет обрабатывать запрос и отправить электронное письмо.

49
ответ дан Kinrany 18 August 2018 в 08:53
поделиться

Вам нужно будет использовать JavaScript, не приводя к iframe (уродливый подход).

Вы можете сделать это в JavaScript; использование jQuery сделает его безболезненным.

Я предлагаю вам проверить AJAX и проводку.

0
ответ дан alex 18 August 2018 в 08:53
поделиться

Страница будет перезагружена, если вы не хотите использовать javascript

-1
ответ дан baloo 18 August 2018 в 08:53
поделиться
  • 1
    ... или сделать что-то некрасивое, как <iframe name="ew" /> и <form target="ew" /> – alex 19 May 2010 в 14:54
  • 2
    Вопрос никогда не говорил, что он не хочет использовать JavaScript, он сказал только предпочтительно без Ajax / jQuery – User that is not a user 23 July 2017 в 23:32

это именно то, как он МОЖЕТ работать без jQuery и AJAX, и он работает очень хорошо, используя простой iFrame. Я ЛЮБЛЮ ЭТО, работает в Opera10, FF3 и IE6. Благодаря некоторым из приведенных выше плакатов, указывающих на меня в правильном направлении, это единственная причина, по которой я размещаю здесь:

<select name="aAddToPage[65654]" 
onchange="
    if (bCanAddMore) {
        addToPage(65654,this);
    }
    else {
        alert('Could not add another, wait until previous is added.'); 
        this.options[0].selected = true;
    };
" />
<option value="">Add to page..</option>
[more options with values here]</select>

<script type="text/javascript">
function addToPage(iProduct, oSelect){
    iPage = oSelect.options[oSelect.selectedIndex].value;
    if (iPage != "") {
        bCanAddMore = false;
        window.hiddenFrame.document.formFrame.iProduct.value = iProduct;
        window.hiddenFrame.document.formFrame.iAddToPage.value = iPage;
        window.hiddenFrame.document.formFrame.submit();
    }
}
var bCanAddMore = true;</script> 

<iframe name="hiddenFrame" style="display:none;" src="frame.php?p=addProductToPage" onload="bCanAddMore = true;"></iframe>

код php, создающий страницу, которая вызывается выше:

if( $_GET['p'] == 'addProductToPage' ){  // hidden form processing
  if(!empty($_POST['iAddToPage'])) {
    //.. do something with it.. 
  }
  print('
    <html>
        <body>
            <form name="formFrame" id="formFrameId" style="display:none;" method="POST" action="frame.php?p=addProductToPage" >
                <input type="hidden" name="iProduct" value="" />
                <input type="hidden" name="iAddToPage" value="" />
            </form>
        </body>
    </html>
  ');
}
4
ответ дан Community 18 August 2018 в 08:53
поделиться
  • 1
    Не используйте PHP print для печати HTML-кода. Просто закройте php tag ?> и добавьте html-код после. И избегать использования exit это не нужно (фатальные ошибки, ...) – Oriol 25 February 2013 в 22:42
  • 2
    да, спасибо, указав это. Это всего лишь необходимый пример, я действительно не делал этого в своей системе. – Tyler 15 March 2013 в 02:33
  • 3
    Это много работы над этим ответом, но есть и многие другие. – User that is not a user 14 October 2017 в 00:53
  • 4
    единственной побочной проблемой для этого является get () в ней, потому что я бы не хотел, чтобы эталонная книга в формате markable / cacheable. – drtechno 23 April 2018 в 14:41

Вы пытались использовать iFrame? Нет ajax, и исходная страница не загружается.

Вы можете отобразить форму отправки как отдельную страницу внутри iframe, а когда она будет отправлена, страница внешнего / контейнер не будет перезагружена. Это решение не будет использовать какой-либо ajax.

2
ответ дан DanC 18 August 2018 в 08:53
поделиться

Самый быстрый и простой способ - использовать iframe. Поместите рамку внизу вашей страницы.

<iframe name="frame"></iframe>

И в вашей форме сделайте это.

<form target="frame">
</form>

и сделайте рамку невидимой в вашем css.

iframe{
  display: none;
}
8
ответ дан Dragan Marjanovic 18 August 2018 в 08:53
поделиться
  • 1
    Должно быть display:none;, а не border:0px. Пробовал редактирование, но мои изменения отвергаются рецензентами, которые, похоже, не смотрят на комментарий редактирования. Измените свой ответ, чтобы исправить код. – cybermonkey 20 March 2016 в 23:52
  • 2
    @cybermonkey вы правы - спасибо! – Dragan Marjanovic 10 May 2016 в 16:50

Я сделал что-то похожее на jquery выше, но мне нужно было сбросить мои данные формы и графические вложения. Итак, вот что я придумал:

    <script>
   $(document).ready(function(){

   $("#text_only_radio_button_id").click(function(){
       $("#single_pic_div").hide();
       $("#multi_pic_div").hide();
   });

   $("#pic_radio_button_id").click(function(){
      $("#single_pic_div").show();
      $("#multi_pic_div").hide();
    });

   $("#gallery_radio_button_id").click(function(){
       $("#single_pic_div").hide();
       $("#multi_pic_div").show();
                 });
    $("#my_Submit_button_ID").click(function() {
          $("#single_pic_div").hide();
          $("#multi_pic_div").hide();
          var url = "script_the_form_gets_posted_to.php"; 

       $.ajax({
       type: "POST",
       url: url,
       data: $("#html_form_id").serialize(), 
       success: function(){  
       document.getElementById("html_form_id").reset();
           var canvas=document.getElementById("canvas");
    var canvasA=document.getElementById("canvasA");
    var canvasB=document.getElementById("canvasB");
    var canvasC=document.getElementById("canvasC");
    var canvasD=document.getElementById("canvasD");

              var ctx=canvas.getContext("2d");
              var ctxA=canvasA.getContext("2d");
              var ctxB=canvasB.getContext("2d");
              var ctxC=canvasC.getContext("2d");
              var ctxD=canvasD.getContext("2d");
               ctx.clearRect(0, 0,480,480);
               ctxA.clearRect(0, 0,480,480);
               ctxB.clearRect(0, 0,480,480);        
               ctxC.clearRect(0, 0,480,480);
               ctxD.clearRect(0, 0,480,480);
               } });
           return false;
                });    });
           </script>

Это хорошо работает для меня, для вашего применения только формы html мы можем упростить этот код jquery следующим образом:

       <script>
        $(document).ready(function(){

    $("#my_Submit_button_ID").click(function() {
        var url =  "script_the_form_gets_posted_to.php";
       $.ajax({
       type: "POST",
       url: url,
       data: $("#html_form_id").serialize(), 
       success: function(){  
       document.getElementById("html_form_id").reset();
            } });
           return false;
                });    });
           </script>
1
ответ дан drtechno 18 August 2018 в 08:53
поделиться

Вот несколько jQuery для публикации на php-страницу и возврата html:

$('form').submit(function() {
    $.post('tip.php', function(html) {
       // do what you need in your success callback
    }
    return false;
});
-5
ответ дан Keith Rousseau 18 August 2018 в 08:53
поделиться
  • 1
    – Keith Rousseau 19 May 2010 в 14:54
  • 2
  • 3
    Это неправильные аргументы для метода post, вы не собираете какие-либо данные из формы и используете общий «применимо ко всем формам». селектор с «сообщениями к определенному ури вместо того, чтобы получать действие из формы», почтовый вызов. – Quentin 19 May 2010 в 14:59
  • 4
    О, хорошее горе. jQuery проверяет тип, поэтому аргументы могут быть пропущены. Тьфу. – Quentin 19 May 2010 в 15:18
  • 5
    Да, они делают это повсюду. Добро пожаловать в API jQuery – Keith Rousseau 19 May 2010 в 17:41

Это должно повлиять на вашу проблему. В этом коде после нажатия кнопки «Отправить» мы вызываем jquery ajax, и мы передаем url для posttype POST / GET data: data information вы можете выбрать поля ввода или любой другой. sucess: callback, если все в порядке с текстовым параметром функции сервера, html или json, ответ от сервера в порядке успеха, вы можете писать предупреждения о записи, если данные, полученные вами, находятся в каком-то состоянии и т. д. или выполните свой код, что делать дальше.

<form id='tip'>
Tip somebody: <input name="tip_email" id="tip_email" type="text" size="30" onfocus="tip_div(1);" onblur="tip_div(2);"/>
 <input type="submit" id="submit" value="Skicka Tips"/>
 <input type="hidden" id="ad_id" name="ad_id" />
 </form>
<script>
$( "#tip" ).submit(function( e ) {
    e.preventDefault();
    $.ajax({
        url: tip.php,
        type:'POST',
        data:
        {
            tip_email: $('#tip_email').val(),
            ad_id: $('#ad_id').val()
        },
        success: function(msg)
        {

            alert('Email Sent');
        }               
    });
});
</script>
2
ответ дан Matas Lesinskas 18 August 2018 в 08:53
поделиться

, если вы отправляете на ту же страницу, на которой вы можете написать теги формы без действия, и она будет отправлена, например

<form method='post'> <!-- you can see there is no action here-->
0
ответ дан Mohamed 18 August 2018 в 08:53
поделиться
2
ответ дан Rhalp Darren Cabrera 18 August 2018 в 08:53
поделиться

Вы либо используете AJAX, либо вы

  • создаете и добавляете iframe в документ
  • , чтобы установить имя iframes в 'foo'
  • set submit [f3]
  • submit
  • имеют формы, которые обрабатывают javascript с помощью «parent.notify (...)», чтобы дать обратную связь
  • опционально вы можете удалить iframe
19
ответ дан Sean Kinsey 18 August 2018 в 08:53
поделиться
  • 1
    Это все еще Ajax. Не XHR, но все же Ajax. – Quentin 19 May 2010 в 14:59
  • 2
    большой трюк спасибо. образец для использования <form id="myGiswebForm" method="post" action="https://******/saveForm.asp" target="myiframe"> и <iframe style="display:none;" src="" name="myiframe"></iframe> – Kemal 21 August 2013 в 15:09
function Foo(){  
   event.preventDefault(); 
 $.ajax(   {  
      url:"<?php echo base_url();?>Controllername/ctlr_function",
      type:"POST",
      data:'email='+$("#email").val(),
      success:function(msg)      {  
         alert('You are subscribed');
      }
   }   );
}

Я много раз пробовал для хорошего решения, и ответ @taufique помог мне прийти к этому ответу.

NB: Не забудьте поставить event.preventDefault(); в начале тело функции.

-1
ответ дан Smita Ahinave 18 August 2018 в 08:53
поделиться

В этом случае необходимо воспользоваться jquery-ajax. Без ajax в настоящее время нет решения.

Сначала вызовите функцию JavaScript при отправке формы. Просто установите onsubmit="func()". Даже если функция вызывается, будет выполняться действие по умолчанию для представления. Если он будет выполнен, не будет возможности остановить обновление страницы или перенаправление. Итак, следующая задача - предотвратить действие по умолчанию. Вставьте следующую строку в начале func().

event.preventDefault()

Теперь не будет перенаправления или обновления. Таким образом, вы просто делаете ajax-вызов из func() и выполняете все, что хотите, когда заканчивается вызов.

Пример:

Форма:

<form id="form-id" onsubmit="func()">
    <input id="input-id" type="text">
</form>

Javascript:

function func(){
    event.preventDefault();
    var newValue = $('#input-field-id').val();
    $.ajax({
        type: 'POST',
        url: '...',
        data: {...},
        datatype: 'JSON',
        success: function(data){...},
        error: function(){...},
    });
}
3
ответ дан User that is not a user 18 August 2018 в 08:53
поделиться

Я нашел то, что, по-моему, проще. Если вы разместите Iframe на странице, вы можете перенаправить выход из него и показать его. Конечно, вы ничего не можете сделать. В этом случае вы можете установить отображение iframe равным none.

<iframe name="votar" style="display:none;"></iframe>
<form action="tip.php" method="post" target="votar">
    <input type="submit" value="Skicka Tips">
    <input type="hidden" name="ad_id" value="2">            
</form>
52
ответ дан user2988879 18 August 2018 в 08:53
поделиться

Вы можете попробовать установить целевой атрибут вашей формы на скрытый iframe, поэтому страница, содержащая форму, не будет перезагружена.

Я попробовал ее с загрузкой файлов (что мы знаем не можем делайте это через AJAX), и он работал красиво.

3
ответ дан wtaniguchi 18 August 2018 в 08:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: