代码之家  ›  专栏  ›  技术社区  ›  DCM

JQuery表单提交生成新表单

  •  0
  • DCM  · 技术社区  · 10 年前

    我有一个JQuery脚本,它将用户输入提交到同一文件中的PHP脚本,然后显示PHP脚本对输入所做的操作的结果。那部分很好。我遇到的问题是,在提交时,JQuery脚本(至少我认为是脚本)也会在原始文件下方生成一个新的提交框。

    我不知道为什么。起初我认为这是输入类型、异步部分的问题,甚至是我在整个代码中的表单位置的问题,但这些似乎都没有起到任何作用。我还是一个初学者,我只是不明白这个问题。

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <form id = "my_form">
    verb <input type = "text" id ="word1"/>
    <input type = "submit"/></form>
    <div id="name"></div>
    <script>
    $(document).ready(function(){
        $("#my_form").on('submit', function(e)
    {
        e.preventDefault();
        var verb = $ ("#word1").val();
        var tag = "#Latin ";
        var url = "http://en.wiktionary.org/wiki/"+verb+tag;
            $.ajax({
                url: "Parser.php",
                data: {"verb": verb},
                type: "POST",
                async: true,
                success: function(result){
                           $("#name").html(result);
                           $("#name").append(url);
    
                        }
            });
     });
    });</script>
    

    结果: result of php script

    PHP公司

    <?php 
    
        $bank = array();
        function endsWith($haystack, $needle) {
            return $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== false);
        }
        function check_end_array($str, $ends)
        {
           foreach ($ends as $try) {
             if (substr($str, -1*strlen($try))===$try) return $try;
           }
           return false;
        }
        function db_connect() {
    
            static $connection;
    
            if(!isset($connection)) {
                $connection = mysqli_connect('127.0.0.1','username','password','Verb_Bank');
            }
    
            if($connection === false) {
                return mysqli_connect_error(); 
            }
            return $connection;
        }
        function db_query($query) {
            $connection = db_connect();
            $result = mysqli_query($connection,$query);
    
            return $result;
        } 
    
        function db_quote($value) {
                $connection = db_connect();
                return "'" . mysqli_real_escape_string($connection,$value) . "'";
            }
        $y = false;
        if (isset($_POST['verb'])){
        $y=db_quote($_POST['verb']);
        echo $y;
        echo "\n";
    
        $m = db_query("SELECT `conjugation` FROM normal_verbs WHERE (" . $y . ")  LIKE CONCAT('%',root,'%')");
        if($m !== false) {
            $rows = array();
            while ($row = mysqli_fetch_assoc($m)) {
                $rows[] = $row;
                }
        }
        foreach ($rows as $key => $value){
            if (in_array("first",$value)==true){
            echo "first conjugation verb\n";}
            $y = $_POST["verb"];
            $x = $y;
            foreach ($bank as $key => $value) 
               (series of IF-statements) 
        }}?>
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   Rajshekar Reddy    10 年前

    正如Roamer-1888所说,问题出在服务器端,您返回的html也有输入。您需要更改代码以仅返回您附加到div的结果字符串。否则,如果这在服务器端不可能实现,因为这可能需要您更改大量代码,那么您可以从结果中删除输入元素,然后将其附加到div.如下图所示。

     success: function(result){
                       var div = document.createElement('div');
                       div.innerHTML = result;
                       $(div).find('input').remove();
    
                       $("#name").html(div.innerHTML);
                       $("#name").append(url);
    
                    }
    
    推荐文章