2016-12-14 78 views
1

所以我有一个AJAX函数,我想搜索具有特定类的每个元素,并将其值以适当的格式添加到AJAX中。那可能吗?如何使用来自多个输入的值填充AJAX?

我有这个AJAX功能:

function sendOrders(button) { 
    $.ajax({ 
     url: "external_file.php", 
     method: "POST", 
     data: { 
      /*Here I need to add the data*/ 
      GameID: "'.$_SESSION['GameID'].'", 
      Round: "'.$round.'", 
      UserID: "'.$_SESSION['UserID'].'", 
     } 
    }).done(function(msg) { 
     $("#DEBUG").html(msg); 
    }); 
}; 

,我需要收集隐藏式输入的数据在页面上带class =“订单”。

我知道我可以通过jquery类访问每个元素,但我不知道如何将属性添加到我的AJAX,当它已经写入。这些元素的数量是可变的,并且它们具有非重复ID,类是相同的。输入这个样子:

<input class="order" type="hidden" name="some_name" id="some_id" value="some_value"> 

谁能帮助?

+1

因此,您不知道您将添加到AJAX中的输入值有多少? –

+2

你可以,而且这有点疯狂,可以将这些隐藏的元素添加到'form'中,并将他们的'name'属性设置为与您的数据中所需的密钥相同。然后,当你发布时,只需使用'$(form).serializeArray()'作为'data'(因为它看起来好像你没有使用JSON)。这几乎是HTML表单的创建目的。 –

+0

我同意只是把它们放在一个'form'中,然后序列化它们'data:$(“#my-form”)。serialize()'。简单的解决方案。 –

回答

0

从我所了解的情况来看,您希望使用类命令从输入中获得的多个不同值的ajax调用?

假设你想只从这些字段添加值,你可以做很简单的事情:

首先,更新具有附加输入变量的AJAX功能,

function sendOrders(button, val) { 
$.ajax({ 
    url: "external_file.php", 
    method: "POST", 
    data: { 
     value : val, 
     GameID: "'.$_SESSION['GameID'].'", 
     Round: "'.$round.'", 
     UserID: "'.$_SESSION['UserID'].'", 
    } 
}).done(function(msg) { 
    $("#DEBUG").html(msg); 
}); 
}; 

然后,为了获得来自所有“订单”类输入的数据,您可以使用Jquery的“每个”功能。你是如何在你的Ajax功能使用的“按钮”

$('.order').each(function(){ 
    sendOrder(buttonId, $(this).val()) 
}); 

不太清楚,但我:例如,如果你想从每个这样的输入值,你可以用你的新sendOrder功能在每个功能假设它与你的保存或提交按钮相关联,所以buttonId将是该按钮的id。这将使用类顺序遍历所有输入,并使用这些值进行ajax调用。

如果你使用的按钮作为提交你也许可以把它拿出来一起从AJAX功能,并有这样的事情:

function sendOrders(val) { 
$.ajax({ 
    url: "external_file.php", 
    method: "POST", 
    data: { 
     value : val, 
     GameID: "'.$_SESSION['GameID'].'", 
     Round: "'.$round.'", 
     UserID: "'.$_SESSION['UserID'].'", 
    } 
}).done(function(msg) { 
    $("#DEBUG").html(msg); 
}); 
}; 
$('#buttonId').click(function(){ 
    $('.order').each(function(){ 
     sendOrder(buttonId, $(this).val()) 
    }); 
}); 
+0

如果我理解正确,您希望分别用不同的AJAX调用发送每个输入值。如果这是真的,我将不得不编辑external_file.php来使用它。 我想我会使用上面评论的提示,但无论如何非常感谢。 –

0

创建的数据对象,遍历所有的投入,并将值添加到对象。

function sendOrders(button) { 
    var data = { 
     GameID: "'.$_SESSION['GameID'].'", 
     Round: "'.$round.'", 
     UserID: "'.$_SESSION['UserID'].'", 
    }; 
    $(button).closest("form").find("input[type=hidden]").each(function() { 
     data[this.name] = this.value; 
    }); 
    $.ajax({ 
     url: "external_file.php", 
     method: "POST", 
     data: data 
    }).done(function(msg) { 
     $("#DEBUG").html(msg); 
    }); 
};