2

我有一个带有文本框的表单。例如,如果我在该文本框中输入数字 3,则会出现我用 Javascript 制作的 3 个文本框。像这样:

这是html代码:

<span>Cate intrebari va contine chestionarul?</span>
        <input type='text' id='nrintrebari'/>
    </td>
    <td>
    <input type='button'  value='Creaza intrebari' onclick='generate()'/>
    <input type='button' value='Save'  id='btn_intrebari'/> 
    </td>
</tr>
</table>

<br><br>

<div id='sim'>

</div>

这是创建文本框的 javascript 代码:

var a=0;

function generate()
{
  var tot = document.getElementById("nrintrebari").value;
var tbl = document.getElementById("sim");

for(var i =1;i<=tot;i++)
{
  a++;
  tbl.innerHTML  = tbl.innerHTML  +'Intrebare nr.'+ a +' <input type="text"  size="100" maxlength= "200" name="intrebare[]" style="height:30px; background-color:#B8B8B8; " > <br><br><br> ';
}

}

如果我想将文本框中的数据传递给 php 文件,我会像这样执行 foreach:

 foreach($_POST['intrebare'] AS $textbox)
{   
    $sql="INSERT INTO intrebari values ('','".$_SESSION['cod']."','$textbox','1')";

    if (!mysql_query($sql))
      {
        die('Error: ' . mysql_error());
      }

}

一切都很好,但这是通过刷新页面完成的。我想在不刷新页面的情况下执行此操作,因此我决定使用 Ajax。像这样:

$(document).ready(function () {
    $('#btn').click(function () {
        $.ajax({
            type: "POST",
            url: 'pag1.php',
            data: "intrebare[]=" + $('#intrebare[]').val(),
            success: function (data) {
                $('#status').html(data);
            }
        });
    });
});

我正在使用我在 Javascript 代码中命名并声明为数组的文本框的名称:intrebare[] 但是当我点击按钮时没有任何反应。如果我将文本框声明为简单,而不是像 intrebare 那样的数组,则传递该值。如何像数组一样通过 Ajax 发送数据?

4

3 回答 3

0

您不能将名称用作“#whatevername”,为此请使用控件的 ID。并且鉴于您不能拥有具有相同 ID 的控件(我们可以,但不推荐),您可以为所有文本框提供一个类并从所有控件中获取所有值。

var a = 0;
function generate() {
var tot = $("#nrintrebari").val();
var tbl = $("#sim");    
for (var i = 1; i <= tot; i++) {
    a++;
    tbl.append('Intrebare nr.' + a + '<input type="text" size="100" maxlength= "200" class="intrebare" style="height:30px; background-color:#B8B8B8; " >');
}   
}

这也不是在表格/ div 中附加控件、文本的完美方法。但它可以以某种方式帮助你。

获取这样的值。

var values = [];
$(".interbare").each(function () {
values.push($(this).val());
});

现在您可以将值数组作为字符串 (values.join(',')) 或作为数组传递给任何页面或服务。

希望这会奏效。

于 2012-09-18T13:51:59.133 回答
0
<form method="POST" id="textvalues">
<span>Cate intrebari va contine chestionarul?</span>
    <input type='text' id='nrintrebari'/>
</td>
<td>
<input type='button'  value='Creaza intrebari' onclick='generate()'/>
<input type='button' value='Save'  id='btn_intrebari'/> 
</td>
</tr>
</table>

<br><br>

<div id='sim'>

</div>
</form>

$(document).ready(function () {
    $('#btn').click(function () {
        $.ajax({
            type: "POST",
            url: 'pag1.php',
            data: "intrebare[]=" + $('#intrebare[]').val(),
            success: function (data) {
                $('#status').html(data);
            }
        });
    });
});

您也可以通过这种方式将值发送到您的 php 页面

于 2012-09-18T13:46:21.510 回答
0

不要使用“intrebare [] ...

你只能使用“intrebare”

另一种方法是 var str = $("form").serialize(); 如果您想使用表单,它将从表单中获取值。

于 2012-09-18T13:38:32.713 回答