【问题标题】:How can I submit form and stay on the same page after require?需要后如何提交表单并保持在同一页面上?
【发布时间】:2020-07-27 17:36:00
【问题描述】:

我有一个代码,它的简化版本可能如下所示:

file1.php

$array = array();
$array = new randomObject(1);
$array = new randomObject(2);
require('file2.php');

file2.php

<form  method="post" action="?">
 <?php
        foreach ($array as $a) {                           
             <p><?php echo $a->getAValue();  
                <textarea rows="5" cols="70" name="textbox[]"> 
                </textarea>
             </p>
  <?php } ?>
        <input id="isTrue"> //true or false
        <input type="submit" >
</form>

用户应该在文本区域中写下答案并点击提交,然后他的答案将与 randomObject 值进行比较。然后在每个textarea旁边显示是真还是假

【问题讨论】:

    标签: javascript php html forms


    【解决方案1】:

    您正在寻找前端将为您处理的东西,而 AJAX 调用正是您所需要的。

    首先,为你的表单命名

    <form id="myForm"  method="post" action="?">
     <?php
            foreach ($array as $a) {                           
                 <p><?php echo $a->getAValue();  
                    <textarea rows="5" cols="70" name="textbox[]"> 
                    </textarea>
                 </p>
      <?php } ?>
            <input id="isTrue"> //true or false
            <input id="submitButton" type="submit" >
    </form>
    

    现在您在提交按钮和表单本身上都有正确的 ID。

    <script>
    let submitB = document.querySelector("#submitButton");
    submit.addEventListener("click", function(e) {
        e.preventDefault();
    });
    </script>
    

    从现在开始,您只需为要访问的 url 编写一个适当的 ajax 调用,您就可以开始了。

    如果您需要这方面的帮助,请告诉我,我会按照您的方式扔东西。

    【讨论】:

    • 感谢您的回答,ajax 部分是否看起来像这样:` $.ajax({ url: 'file2.php', type: 'post', data: {value: value} , 成功: function(response){ $('#isTrue').text('the answer is true'); } ` . 抱歉,我是新手,我不知道如何将代码放入其中。
    • 你要么使用 ES 要么使用 JQuery。在我的示例中,我使用了 ES。您可以重定向到任何 URL,只要该给定 URL 处理您的传入请求。
    • 你要么使用 ES 要么使用 JQuery。在我的示例中,我使用了 ES。您可以重定向到任何 URL,只要该给定 URL 处理您的传入请求。
    • 对不起,我不明白。如何重定向到我所在的页面(是 window.location 吗?)。另外,我应该保持 action="?" ?
    【解决方案2】:

    我猜您想保留用户输入的值,因为如果您提交表单,它们就会消失。 (页面重新加载) 这可以通过更改输入字段来完成。如果提交了一个值,则将该值传递给每个相应的输入字段。

    类似的东西:

    <textarea rows="5" cols="70" name="textbox[]" <?php if(isset(value[SOMETHING])){?> value="<?php echo value[SOMETHING]; ?>" <?php } ?> >
    

    这只是它如何工作的一个例子。确保将其适应您的代码!

    【讨论】:

    • 我想要做的是将用户的答案与 randomObject ($a->getAValue() ) 的值进行比较,然后在文本区域旁边显示一条消息,例如“你的答案是真的”。
    • 知道了。现在似乎是什么问题?它的哪一部分不起作用?
    • 目前在我的项目中,我有类似
      的东西。所以,当我点击提交时,我会转到 file3.php 进行比较并显示消息“你的答案是真的”。
    • 那么是一切都按原样工作,还是有什么不工作?抱歉,如果不了解问题,我无法为您提供帮助。
    • 我的目标是在单击提交后立即在文本区域旁边显示一条消息,而无需转到另一个页面或刷新页面,我不知道该怎么做。对不起,如果它看起来不清楚,也许我的英语坏了。感谢您的耐心等待。
    猜你喜欢
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2017-07-21
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    相关资源
    最近更新 更多