2012-01-05 64 views
0

我被困在这部分...

我试图让ID包含在AjaxPost发送到服务器时,但我不能找到正确的信息当我查看它时。
我有一组具有id的html输入。他们都在keypress旁边有一个按钮,当我点击这个按钮时,它保存了值并且ajax将它发送到服务器。我在包含的文本框中获得了值,但我似乎无法将该文本框的标识获取到post中。

这里是我的Ajax功能包含ID与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]} 


正如你看到的,ID被排除提前


谢谢..

+0

'id'的价值是什么? '.text()'将始终返回元素的文本内容。 – 2012-01-05 00:04:51

回答

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 ..和他们没有休息。我发现,.prev()(在进入“id”和“value”变量)是绕过这个挫折所必需的。


代码!

2

尝试改变这一点:

data: "{ Id: " + $(".solo1").attr('id') + ", Value: " + $(".solo1").val() + "}", 

虽然现在我回头看它发生,我认为你将有奇怪的行为喜欢这个。

你最初的问题是没有定义id。它似乎超出了你的功能范围。

你可以做这样的事情的AJAX调用之前...

var id = null; 
$('.solo1').each(function(){ 
    if($(this).val() != '') 
    { 
     id = $(this).attr('id'); 
    } 
}); 

但同样,这更是一个肮脏的工作围绕为你实际上试图在这里做。在您的jQuery

<div id="featherbone"> 
<input class="solo1" data-id="craven1"/> 
</div> 

然后:

+0

嗯..它有在那里的Id,但它只发布第一个ID(craven1)的所有职位..给我一秒,要更新内容,以显示我如何让我的JavaScript设置 – 2012-01-05 00:07:52

+0

这是奇怪的行为我在说。调用$(“。solo1”)。val()是一个坏主意,因为从技术上讲,所有这些输入字段都有一个值,即使你没有定义它。所以它总是会给出第一个结果。我可以更新一个选项 - 尽管是一个不好的做法 - 选择值,同时保留这个html结构... – 2012-01-05 00:09:56

+0

但是当我在文本框中输入内容并保存它时,它会将我输入的值发布到带有id的文本框craven1/2 /等等。它有我输入的那些不同的值,但它仍然张贴他们所有的craven1 id ..如果这有什么意义 – 2012-01-05 00:12:34

0

试试这个

data: "{ Id: " + $(".solo1").attr("data-id") + ", Value: " + $(".solo1").val() + "}", 
+0

仍给我同样的问题.. – 2012-01-05 00:10:13