2016-02-26 31 views
0

我有一個JQuery腳本,它將用戶輸入提交給同一文件中的PHP腳本,然後顯示PHP腳本對輸入做什麼的結果。這部分工作正常。我遇到的問題是,在提交後,JQuery腳本(至少,我認爲它是腳本)也會在原始腳本下面生成一個新的提交框。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

請顯示'Parser.php'代碼,或者至少是它當前返回的'result'。 – cFreed

+0

'$(「#name」)。html(result);'插入從服務器返回的任何HTML,如果該HTML再次包含原始表單,那麼這將插入。 –

+0

@ Roamer-1888有道理。那麼,如何更改它,以便表單不包含在返回的HTML中? – DCM

回答

1

由於流浪者,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); 

       } 
+1

完美的工作!謝謝! – DCM

+0

很高興聽到這一點。 –