如何从php foreach循环中向脚本传递两个参数?
我有一个php foreach循环,它在数据库中的记录中运行。foreach添加了一个新的表行,显示数据库中的联系人,例如姓名、地址等。我正在使用href链接启动一个ajax/jquery脚本,该脚本将该条目添加到一个crew list表中。脚本位于foreach循环中,因此我可以访问要发送的数据 我的问题是,第一行工作正常,然后任何其他记录都不会触发脚本。我想这可能是因为脚本不能用相同的ID启动?因此,我将联系人ID添加到href如何从php foreach循环中向脚本传递两个参数?,php,ajax,Php,Ajax,我有一个php foreach循环,它在数据库中的记录中运行。foreach添加了一个新的表行,显示数据库中的联系人,例如姓名、地址等。我正在使用href链接启动一个ajax/jquery脚本,该脚本将该条目添加到一个crew list表中。脚本位于foreach循环中,因此我可以访问要发送的数据 我的问题是,第一行工作正常,然后任何其他记录都不会触发脚本。我想这可能是因为脚本不能用相同的ID启动?因此,我将联系人ID添加到href <a id="addCrewLink'.$contact
<a id="addCrewLink'.$contact->person_id.'" href="/pages/voyages/crewlists/add.php?item='.$contact->person_id.'&type=crew" class="btn btn-sm btn-outline-primary">crew</a>
这不管用。我认为我需要将脚本移出foreach循环,这既是因为它位于我要更新的表之上,也是因为表中充满脚本可能是一种不好的做法
我可以使用链接来传递参数,然后使用一个脚本来获取链接吗
$(document).ready(function() {
$("#addCrewLink<?php echo $contact->person_id;?>").click(function(e) {
e.preventDefault();
var personID = '<?php echo $contact->person_id;?>';
var voyageID = '<?php echo Input::get('voyage'); ?>';
var passageID = '<?php echo Input::get('passage'); ?>';
var role = '<?php echo $contact->role;?>';
$.ajax({
type: "POST",
url: "/pages/voyages/crewlists/add.php",
dataType: 'json',
data:{ person: personID, embarkingAs: role, voyage: voyageID, passage: passageID },
'success': function(data) {
if(data['success']) {
//refresh the tables
$("#crewTable").load(location.href + " #crewTable");
//$("#passengerTable").load(location.href + " #passengerTable");
//send the user a success message
resetToastPosition();
$.toast({
heading: 'Success',
text: 'Waypoint added successfully',
textColor: 'white',
showHideTransition: 'slide',
hideAfter : 7000,
icon: 'success',
loaderBg: '#f96868',
position: 'top-center'
})
} else {
var i;
for (i = 0; i < data['message'].length; i++) {
//scroll to the top
window.scrollTo({ top: 0, behavior: 'smooth' });
this.error(this.xhr, data['message'][i]);
}
}
},
'error': function(jqXHR, textStatus, errorThrown) {
//send the user a fail message
resetToastPosition();
$.toast({
heading: 'Error',
text: textStatus,
textColor: 'white',
showHideTransition: 'slide',
hideAfter : 7000,
icon: 'error',
bgColor: '#f96868',
position: 'top-center',
loaderBg: '#405189'
})
}
})
});
});
非常感谢你的帮助
问候
马特快到了。我的建议是作出以下修改: 更改锚定,以便它们都有一个“添加船员链接”类 在每个锚点上添加所需数据的数据属性 最终的结果是:
<a class="add-crew-link" data-id="1" href="..." class="btn btn-sm btn-outline-primary">crew</a>
<a class="add-crew-link" data-id="2" href="..." class="btn btn-sm btn-outline-primary">crew</a>
<a class="add-crew-link" data-id="3" href="..." class="btn btn-sm btn-outline-primary">crew</a>
<a class="add-crew-link" data-id="4" href="..." class="btn btn-sm btn-outline-primary">crew</a>
注意:根据需要添加额外的数据-属性。例如数据名称或数据时代,或其他
将单击处理程序更改为以所有“添加工作组链接”锚定为目标:
$。添加工作组链接。单击功能E{
在click handler函数的开始处获取所需的id和其他数据属性:
var personID=$this.data'id'
当然,要确保函数不再在PHP循环中。对每个链接使用单独的单击处理程序没有多大意义。您应该编写一个函数,该函数适用于所有这些链接。首先通过类而不是id来选择它们。例如,在每种情况下,您需要发送的单个数据可以放在cu中stom这些链接上的数据属性本身,以便您的单击处理程序可以从那里读取它们。