2012-01-05 13 views
0

私はこの部分で立ち往生しています...

AjaxPostがサーバーに送信するときにIDを取得しようとしていますが、正しい情報を見つけることができません私はそれを探しました。
idを持つ一連のhtml入力があります。彼らはすべてkeypressの隣に表示されるボタンを持っています。このボタンをクリックすると、値が保存され、ajaxはそれをサーバーに送信します。インクルードするテキストボックスに値がありますが、そのテキストボックスのIDをpostに入れることはできません。

は、ここに私のAjax機能ajax投稿のIDを含む

<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を読み込み、何されますご覧のとおり、idが事前に


感謝を除外します。..

+0

'id'の値は何ですか? '.text()'は常に要素のテキスト内容を返します。 –

答えて

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'); 
    } 
}); 

しかし、再び、これはあなたが実際にここで何をしようとして出回っ汚い仕事の詳細です。

+0

Hmmm ..そこにはIdが入っていますが、すべての投稿の最初のID(craven1)だけが投稿されています。私はJavaScriptをどのように設定しているかを表示するためにコンテンツを更新します。 –

+0

これは奇妙な動作です私は話していた。 $( "。solo1")を呼び出します。val()は技術的にすべての入力フィールドが値を持っているので、あなたがそれを定義していないとしても、悪い考えです。したがって、最初に見つかった結果が常に得られます。私はこのHTML構造を維持しながら値を選択するために、悪い習慣ではあるが、オプションで更新することができます... –

+0

しかし、テキストボックスに何かを入力して保存すると、IDでテキストボックスに入力した値がポストされますクレイヴン1/2 /など。それは私が入力したそれらの異なる値を持っていますが、それらのすべてのためのcraven1 idをまだ投稿しています。もし意味があれば –

0

これを試してみてください:

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

を次に、あなたのjQueryで:

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

まだ私に同じ問題があります.. –

関連する問題