在AJAX调用中使用FOR循环

时间:2012-07-11 15:41:35

标签: javascript ajax jquery loops for-loop

所以,我要做的是发送一个AJAX请求,但正如你所看到的,我的表单中有很多字段,我使用数组进行验证,我想使用相同的数组,传递要通过AJAX发送的值:

我从未在JS中使用for循环,但无论如何似乎都很熟悉。

制作循环的方式显然不会起作用:

for (i=0;i<required.length;i++) {
        var required[i] = $('#'+required[i]).attr('value');

这将创建我想要的变量,如何使用它们?

很高兴,你们可以帮助我!!!非常感谢你!

required = ['nome','sobrenome','endereco','codigopostal','localidade','telemovel','email','codigopostal2','localidade2','endereco2','nif','entidade','codigopostal3','localidade3','endereco3','nserie','modelo'];              


function ajaxrequest() {
    for (i = 0; i < required.length; i++) {
        var required[i] = $('#' + required[i]).attr('value');
        var dataString = 'nome=' + required[0] + '&sobrenome=' + required[1];
    }
    $.ajax({
        type: "POST",
        url: "ajaxload/como.php",
        data: dataString,
        success: function() {
            $(".agendarleft").html("SUCESS");
        }
    });

3 个答案:

答案 0 :(得分:4)

为了帮助确保传递适当的元素ID和值,循环遍历各种元素并首先将数据添加到对象。

<强> jQuery的:

required = ['nome', 'sobrenome', 'endereco', 'codigopostal', 'localidade', 'telemovel', 'email', 'codigopostal2', 'localidade2', 'endereco2', 'nif', 'entidade', 'codigopostal3', 'localidade3', 'endereco3', 'nserie', 'modelo'];

function ajaxrequest() {
    var params = {}; // initialize object

    //loop through input array
    for (var i=0; i < required.length; i++) {             
        // set the key/property (input element) for your object
        var ele = required[i]; 
        // add the property to the object and set the value
        params[ele] = $('#' + ele).val(); 
    }
    $.ajax({
        type: "POST",
        url: "ajaxload/como.php",
        data: params,
        success: function() {
            $(".agendarleft").html("SUCESS");
        }
    });
}

演示: http://jsfiddle.net/kPR69/

答案 1 :(得分:2)

更清洁的是在您希望保存的每个字段上放置一个类,并使用它来迭代它们。然后您也不需要指定输入名称,您可以将json对象直接发送到服务;

var obj = {};

$('.save').each(function () {

       var key = $(this).attr('id');
       var val = $(this).val();

       if (typeof (val) == "undefined")
           val = "''"

       obj[key] = val;
}

然后发送obj作为AJAX调用的数据属性....

答案 2 :(得分:1)

您的代码存在一些问题。 'required'被覆盖,并且也在循环内重新声明。

我建议使用预先编写的库,我在下面列出了一些。

http://jquery.malsup.com/form/#validation

https://github.com/posabsolute/jQuery-Validation-Engine

否则后续会让你走近。您可能需要将数组转换为字符串。

var required = ['nome','sobrenome'];              

function ajaxrequest() {
  var values;
  for (i = 0; i < required.length; i++) {
    var values[i] = $('#' + required[i]).attr('value');
  }
  $.ajax({
    type: "POST",
    url: "ajaxload/como.php",
    data: values,
    success: function() {
        $(".agendarleft").html("SUCESS");
    }
});

}