我的网页上有两种类型的链接:
<div id="mybookings">
<a name="type1ID" href="4007" class="booking-deleteDraft">Delete Me</a>
<a name="type2ID" href="9001" class="booking-deleteDraft">Delete Me</a>
</div>
我正在写一个ajax提交,需要在POST中包含正确的数据。我如何要求JQuery执行以下操作:
$("#mybookings").on('click', '.booking-deleteDraft', function (e) {
e.preventDefault();
data: {
Type1ID: $(this).attr("href").val() // This gets the value of the href, but it should only get it where the name attribute is "type1"
Type2ID: $(this).attr("href").val() // This gets the value of the href, but it should only get it where the name attribute is "type2"
},
.....
如何在Type1ID和Type2ID参数中获取正确的值?
答案 0 :(得分:5)
使用此css选择器a[name="type1"]
和a[name="type2"]
data: {
Type1ID: $('a[name="type1"]').attr("href") // This gets the value of the href, but it should only get it where the name attribute is "type1"
Type2ID: $('a[name="type2"]').attr("href") // This gets the value of the href, but it should only get it where the name attribute is "type2"
},
答案 1 :(得分:1)
$('a[name="type1"]').prop('href');
答案 2 :(得分:1)
你有一个与jQuery绑定的click事件处理程序,可能看起来像这样:
$('a.booking-deleteDraft').on('click', function(e) {
//Do stuff here.
});
我建议做以下事情:
$('a.booking-deleteDraft').on('click', function(e) {
var $this = $(this),
type = $this.attr('name'),
href = $this.attr('href'),
data = {};
data[type] = href;
//Append any additional data to the data object here.
//You could use $.post or $.get here too.
$.ajax({
//Your ajax options.
data: data //Send the data object here.
});
});
现在,您的任何booking-deleteDraft
链接都会自动处理。
编辑如果您需要密钥为type1ID
而不是type1
,则只需附加'ID'
:
data[type + 'ID'] = href;
如果直接在数据库查询中使用此值,则需要在服务器端清理它。这里的值很容易被操纵,允许滥用用户指定数据库表的几乎任何字段及其值。如果您没有使用预准备语句,它还可以打开SQL注入。
将服务器端接收的值与有效值列表进行比较。
答案 3 :(得分:-1)
如果你有基于数据库中的条目或类似的东西删除链接.. 你可以试试这个:
$("#mybookings").on('click', '.booking-deleteDraft', function (e) {
e.preventDefault();
data: {
$(this).attr("name"): $(this).attr("href");
});