0

所以,我想做的是发送一个 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");
        }
    });
4

3 回答 3

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/

于 2012-07-11T16:05:43.567 回答
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 调用的数据属性发送....

于 2012-07-11T16:00:40.383 回答
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");
    }
});

}

于 2012-07-11T15:59:41.477 回答