2017-12-13 16 views
1

ajaxでフォームを送信しようとしていますが、そのフォームは実際にテーブルにあります。私はwhileループで満たされたテーブルを作成しました+クリックするとすべての行のボタンが送信されますが、ボタンをクリックすると何も起こりません。どんな考え?ここに私のコードです。また、そのフォームを提出する正しい方法ですか?私はすべてのフォームのJSコードを生成することを意味します。whileループ内でJavascriptコードが機能しない

EDIT: でも警告し、その後、単純な.click 1にその機能を変更した後、それは何もしません。完全に実行されないように見える

while($row = $stmt->fetch()) 
{ $x++; 
    echo '<tr> 
    <form id="lululu-'. $x .'" method="post"> 
    <td>'. $x .'</td> 
    <td><label>' .$row["WebName"] . '</label></td> 
    <input type="hidden" name="clothes" value="'.$row["clothes"] .'"/> 
    <input type="hidden" name="pieces" value="'.$row["pieces"] .'"/> 
    <input type="hidden" name="userId" value="'.$row["userId"] .'"/> 
    <td><img src="/img/knownitem.png" alt="Not found" /></td> 
    <td><label>'.$row["gear"] .'</label></td> 
    <td><label>1</label></td> 
    <td><label>2</label></td> 
    <td><label>3</label></td> 
    <td><select name="selltype"> 
     <option value="1" name="1">1</option> 
     <option value="0" name="0">0</option> 
    </select></td> 
    <td><input type="number" name="cost" min="1" style="width: 50px;" value="1"/></td> 
    <td><input type="text" name="test"/></td> 
    <td><input type="submit" name="submit" class="btn btn-primary btn-block" value="GetIn" /></td> 
    </form></tr> 
    <script type="text/javascript"> 
    jQuery("#lululu-' . $x . '").submit(function (e) { 
     e.preventDefault(); 
     $.ajax({ 
       type: "POST", 
       url: "/duuh/test.php/", 
       data: $("#lululu-'. $x .'").serialize(), 
       success: function(data) 
       { 
    alert("success"); 
       } 
      }); 
     }); 
    </script> 
    '; 
} 
echo ' </table> 
    </div>'; 

ありがとうございます。

+0

は、ブラウザのエラーコンソールには何を示すの作品提出しますか? – ceejayoz

+0

何もありません。何もない。エラーはありません。 – Crepitus

+4

実際に複数のスクリプトを用意する理由はありません。一般的なスクリプトの1つです。 – epascarello

答えて

4

ちょうどループからのJavaScriptコードの一部を削除し、ちょうど

<script type="text/javascript"> 
    jQuery("form[id^='lululu-']").submit(function (e) { 
     e.preventDefault(); 
     $.ajax({ 
      type: "POST", 
      url: "/duuh/test.php/", 
      data: $(this).serialize(), 
      success: function(data) 
       { 
        alert("success"); 
       } 
     }); 
    }); 
</script> 

form[id^='lululu-']ループの外側に次のコードを使用 - このフォームを参照 - IDがlululu-

$(this)

始まるがフォームを選択

個人的には:

1- jsコードを0の内側で使用する代わりにsubmit(function(){})

を使用すると@incrediblehatとして

2 - 使用.on('submit' , function(){})はまた、その上のすべてのフォームクラス=「ルル・フォーム」と試合にクラスを追加することによってそれを行うことができますコメントに言いました:$(」 .luluフォーム」)。....いずれかの方法が

+1

'class =" lulu-form "のすべてのフォームにクラスを追加して、それを行うこともできます:' $( "。lulu-form")。submit ... '。どちらの方法でも動作します。 '.on'と出くわすための+2 – IncredibleHat

+1

@IncredibleHatあなたは正しいです:)その答えを編集します –

+0

ボタンを押しても何も起こりません。 – Crepitus

関連する問題