包含带有ajax帖子的ID

时间:2012-01-05 00:02:12

标签: jquery ajax post

我被困在这一部分......

我试图在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]}


如您所见,身份被排除在外:
提前致谢

3 个答案:

答案 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”变量中输入)是绕过这个挫折的必要条件。

代码开启!