0

私はこのフォームからjavascript関数を形成しようとしています:

<form class="responseForm" action="javascript:parseResponse123<?php echo $id; ?>()" id="responseForm<?php echo $id; ?>"> 
<input name="hiddenField5<?php echo $id; ?>" id="hiddenField5<?php echo $id; ?>" type="hidden" value="<?php echo $id; ?>" />
<input name="hiddenField4<?php echo $id; ?>" type="hidden" id="hiddenField4<?php echo $id; ?>" value="<?php echo $qty; ?>" />

<font color="red"><?php echo $val; ?></font><br />
<?php
$i=1;
while($i<=$qty)
{
?>
Participant <?php echo $i; ?>:<input name="hiddenField2[]" id="hiddenField2" type="text" /><br />
<?php  $i++;
 }
 ?>
<input name="submit" type="submit" value="Submit" />
</form>

参加者入力フィールド(hiddenfield2)は、同じ名前とIDの1つ以上のフィールドのどこでもかまいません。

次に、phpページに送信するための次のコードがあります。

function parseResponse123<?php echo $id; ?> () 
{
var hiddenField2<?php echo $id; ?> = $("#hiddenField2<?php echo $id; ?>");
var hiddenField4<?php echo $id; ?> = $("#hiddenField4<?php echo $id; ?>");
var hiddenField5<?php echo $id; ?> = $("#hiddenField5<?php echo $id; ?>");
var hiddenField1<?php echo $id; ?> = $("#hiddenField1<?php echo $id; ?>");

var url = "insert.php";

    $.post(url,{  hiddenField2: $('[name="hiddenField2<?php echo $id; ?>[]"]').serialize(),hiddenField: hiddenField5<?php echo $id; ?>.val(), hiddenField1:hiddenField1<?php echo $id; ?>.val(), hiddenField4:hiddenField4<?php echo $id; ?>.val()  } , 
    function(data) {

    });
    setTimeout(function() {

    $.ajax({
    type:"POST",
    data:"getNews=true",
    success: function(r){
        $("#newsContent").html(r);

    },
    error: function(){
 alert($(".hiddenField2<?php echo $id; ?>").val());     
$("#error").text($(".hiddenField2<?php echo $id; ?>")).fadeIn(300)
    }
})


},200);
 }

そこにあるすべてのエコーIDを無視してください。それらは、将来の使用のために何よりも多くあります。javascriptを使用してhiddenField2の配列を作成し、それをinsert.phpに送信してから、phpがforeachループを使用できるように配列をデコードする方法についてサポートが必要です。これで何か助けはありますか?

4

1 に答える 1

0

jQuery Serialize 関数を調べる必要があります。

http://api.jquery.com/serialize/

$.ajax({
type:"POST",
data: $("#form-id").serialize(),
success: function(r){
 // do something here after success
});

編集:精巧

私はこれをテストしませんでしたが、あなたはこのようなことをすることができます

<form class="responseForm" action=""> 
<input name="formData[id]" type="hidden" value="<?php echo $id; ?>" />
<input name="formData[qty]" type="hidden" value="<?php echo $qty; ?>" />

<font color="red"><?php echo $val; ?></font><br />
<?php
$i=1;
while($i<=$qty)
{
?>
Participant <?php echo $i; ?>:<input name="formData[participants][]" type="text" /><br />
<?php  $i++;
 }
 ?>
<input name="submit" type="submit" value="Submit" />
</form>

JavaScriptにこれを使用します

<script>
    $("form.responseForm").submit(function(e){
        e.preventDefault();
        var formData = $(this).serialize();
        $.ajax({
            url : '/insert.php', // assuming from root of your domain dir 
            type:"POST",
            data: formData,
            success: function(response){
                $("#newsContent").html(response);
            },
            error: function(){

            }
        });
    });
</script>

そしてあなたのinsert.phpで

<?php

    $formData = $_POST['formData']; // an array of the form
    foreach($formData['participants'] as $participant){
        // do something
    }
?>
于 2013-02-19T23:09:17.580 に答える