jQuery ajax调用,传递数据:从循环遍历元素

时间:2015-05-31 19:19:31

标签: javascript jquery ajax

有没有办法循环遍历元素并传递$ .ajax()的数据:{}选项中的元素值?

例如

$res = pg_query($con, "select * from tbl_salary_deductions");       
    while($row = pg_fetch_assoc($res)) {    
    echo "<input type=checkbox class='dlccat' id='" .  $row['dlcid']. "'> Category " . $row['dlccategory'] . "<br>";
}

创建复选框。然后在调用中只传递已检查的那些,所以我可以处理它们服务器端:

$.ajax({
        url: 'ajax/register_driver.php',
        data: {
            //dlccat
            $.each($(".dlccat:checked"), function() {
                dlcat + $(this).id: true,
            });
        },
        success: function () {

        },
        error: function () {
            alert('DATA UPDATE FAILED. PLEASE TRY AGAIN!');
        }
    })

enter image description here

需要在db中按照图片保存已检查项目的值。

1 个答案:

答案 0 :(得分:2)

$ .ajax()是jQuery公开的XMLHttpRequest的实现。将它视为一个函数调用,您将传递初始化参数,如url,data,dataType等。&#34; data&#34;传递给$ .ajax的选项应该是一个对象。它不会像你期望的那样被评估/运行。

上面的代码会出现语法错误,因为您正在尝试评估对象内的循环(每个语句)。

正确的方法是首先使用each语句形成一个对象,然后将该对象传递给$ .ajax方法。

会是这样的。

var obj = {};
$(".dlccat:checked").each(function() {
    obj["dlcat_" + this.id] = true;
});

//to add other params, extend this object
$.extend(obj, {"otherParam" : "otherParamsValue"});

然后在$ .ajax中,将此obj变量作为数据传递。他们将作为GET参数获得

$.ajax({
    url: 'ajax/register_driver.php',
    data: obj,
    success: function () {

    },
    error: function () {
        alert('DATA UPDATE FAILED. PLEASE TRY AGAIN!');
    }
})