2017-06-20 1 views
0

にキーで入力要素の配列を追加します。を取得し、私は次のHTML入力要素を持っていると仮定するといるFormData

<input type="text" name="textinput[300]"> 
<input type="text" name="textinput[450]"> 
<input type="text" name="textinput[248]"> 

を私は順序でいるFormDataオブジェクトにそれらを追加するこれらのフィールドの値を取得したいのですがそれらをAjax経由でサーバー側に送信します。各配列要素内のキーは、各入力フィールドに関連付けられた一意のIDを示すので重要です。私は次のように設定し、サーバー側のコードを持っているので、私はユニークなキーで配列として設定テキストフィールドの名前を持っている理由は次のとおりです。

<?php 
if(isset($_POST['textinput'])){ 
    $IDs = array_keys($_POST['textinput']); 

    foreach($IDs as $index => $ID){ 

     $field_value = $_POST["textinput"][$ID]); 

     $query = "UPDATE `tablename` SET fieldname = $field_value WHERE `ID` = $ID"; 

     try{ 
      $stmt = $db->prepare($query); 
      $result = $stmt->execute(); 
     } 
     catch(PDOException $ex){ 
      die("UPDATE Failed ".$ex->getMessage()); 
     } 

    } 
} 
?> 

次JSは私のために動作しません、そしてどうやらただ、入力フィールドを取得FORMDATAオブジェクトにそれを追加し、処理のために、AJAXを介してサーバ側に送信するよりも、これに多くのがあります:

<script> 
     var textinput = document.getElementsByName('textinput'); 

     var data = new FormData(); 

     data.append('textinput[]', textinput); 

     $.ajax({ 
      type: "POST",     
      url: "ajax-processing.php", 
      processData: false, 
      contentType: false, 
      cache: false, 
      data: data, 
      success: function(data) { 
       alert("Success!!!"); 
      }, 
      error: function(xhr, textStatus, errorThrown) { 
       alert('Failed to save data'); 
      } 
     }); 
} 
</script> 
+0

'textinput'変数をtrue配列にするとどうなりますか? 'FormData()'に追加する前に、E.G '[] .slice.call(document.querySelectorAll( 'input [name * = textinput]')); –

+0

SQLインジェクション攻撃! '' – James

答えて

0

を変更してみてください

var textinput = document.getElementsByName('textinput'); 
var data = new FormData(); 
data.append('textinput[]', textinput); 

To

+0

シンプルで洗練されたソリューション。魅力のように働いた、ありがとう! –

関連する問題