我被困在这一部分......
我试图在AjaxPost将其发送到服务器时获取ID,但在查找时我无法找到正确的信息。
我有一组具有id的html输入。它们都在keypress
旁边显示了一个按钮,当我单击此按钮时,它会保存该值,并且ajax会将其发送到服务器。我在文本框中输入了值,但我似乎无法将该文本框的ID添加到post
中。
这是我的Ajax功能
<script type="text/javascript">
$(function () {
$('.solo1').after('<span class="ui-state-default ui-corner-all ui-icon-disk ui-icon saveButton" onClick="save();" title="Save" style="float:left; height:20px;" onclick="save()"></span><br />')// ui icon
.keypress(function() {
$(this).next('.saveButton').show();//appends ui icon
});
$('.saveButton').hide().click(function() {
$(this).hide(); // removes ui icon on click
});
$('.ui-state-default').hover(
function () { $(this).addClass('ui-state-hover'); },
function () { $(this).removeClass('ui-state-hover'); } //ui icon hover
);
});
function save(value) {
$.ajax({
url: "Default.aspx",
type: "POST",
data: "{ Id: " + $(".solo1").attr('id') + ", Value: " + $(".solo1").val() + "}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log(data);
},
});
}
</script>
- HTML -
<div id="featherbone">
<input class="solo1" id="craven1"/>
<input class="solo1" id="craven2"/>
<input class="solo1" id="craven3"/>
<input class="solo1" id="craven4"/>
<input class="solo1" id="craven5"/>
</div>
这里是萤火虫的帖子所读的内容。
{ Id: , Value: [value entered into textbox]}
如您所见,身份被排除在外:
提前致谢
答案 0 :(得分:2)
尝试更改此内容:
data: "{ Id: " + $(".solo1").attr('id') + ", Value: " + $(".solo1").val() + "}",
虽然我现在回想起来,但我会发现你会有这种奇怪的行为。
你最初的问题是没有定义id。它看起来超出了你的功能范围。
你可以在ajax调用之前做这样的事情......
var id = null;
$('.solo1').each(function(){
if($(this).val() != '')
{
id = $(this).attr('id');
}
});
但同样,对于你在这里真正要做的事情来说,这更像是一个肮脏的工作。
答案 1 :(得分:0)
试试这个:
<div id="featherbone">
<input class="solo1" data-id="craven1"/>
</div>
然后在你的jQuery中:
data: "{ Id: " + $(".solo1").attr("data-id") + ", Value: " + $(".solo1").val() + "}",
答案 2 :(得分:0)
以下是我修复它的方法..在ajax调用的范围内制作变量,并使用数据中的变量。
$('.saveButton').click(function () {
var id = $(this).prev().attr('id'); //used in the "data" attribute of the ajax call
var value = $(this).prev().val(); //used in the "data" attribute of the ajax call
$.ajax({
type: "POST",
url: "Default.aspx",
data: "{Id: " + id + ", Value: " + value + "}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log(data);
}
});
$(this).hide();
}); //runs ajax call and removes ui-icon after .saveButton is clicked
我遇到的另一个问题是,它只会得到第一个文本框的值和ID ..而不是其余的...我发现{{1} }(在“id”和“value”变量中输入)是绕过这个挫折的必要条件。
代码开启!