【问题标题】:jQuery ajax call, pass data: from looping through elementsjQuery ajax 调用,传递数据:从循环遍历元素
【发布时间】:2015-08-14 05:08:14
【问题描述】:

有没有办法循环遍历元素并在数据中传递元素值:$.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!');
        }
    })

需要根据图片将选中项目的值保存在数据库中。

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    $.ajax() 是 jQuery 公开的 XMLHttpRequest 的实现。将其视为一个函数调用,您将向其传递初始化参数,如 url、data、dataType 等。传递给 $.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!');
        }
    })
    

    【讨论】:

    • 不错的答案,但对于“完整性”,您可能需要在 each 中引入一些参数,例如 function(i, obj) { obj.id }。如果不是,至少是this.id,而不是$(this).id :)
    • 到达那里。问题是我必须作为查询字符串传递类似 &dlcat_1=true&dlcat_5=true dlcat 不是变量而是字符串
    • 假设我还有其他要手动传递的参数?例如。 “dldrv”:“34”,如何将这些附加到 ajax 请求中?还是我必须将它们包含在对象中?
    • @FabrizioMazzoni Ajax 会为您解决这个问题。将所有内容放入对象中。这个obj[dlcat + $(this).id] = true 应该改为obj['dlcat_' + this.id] = true
    • 谢谢。如果我用 console.log(obj) 打印出对象,它就可以工作。现在的问题是,在 php 中使用 $_REQUEST[] 时,字符串中充满了奇怪的字符。有没有办法准备好让它正确通过?给您带来不便深表歉意!
    猜你喜欢
    • 2018-06-05
    • 1970-01-01
    • 2010-09-15
    • 2010-10-28
    • 2018-04-13
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多