2012-01-05 113 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