2

私が作業しているアプリケーションでは、サーバーページを使用して、入力の名前をその値のキーとして受け取ります。ajaxでこれを行うことは可能ですか? この例では、thisName はリテラル文字列として扱われます。

$('table').each(function(){ 
    $(this).delegate("input", "focusout", function(){
        var thisValue = $(this).val();
        var thisName = $(this).attr('name');
        $.ajax({
            timeout: 3000,
            //cache: false,
            data: {
                p_session_id: $("[name='p_session_id']").val(),
                p_username: $("[name='p_username']").val(), 
                thisName: thisValue
//              ^^
            },
            success: function(data){
            alert( data )
        }
    });
});
4

2 に答える 2

1

残念ながら、オブジェクト初期化子の内部では、 の左側の部分は:変数ではなく文字列として扱われるためthe_key、 と同じと見なされ"the_key"ます。

これは、動的な名前でプロパティを追加するために私が考えることができる最も簡単な方法です:

var fields = {
    p_session_id: $("[name='p_session_id']").val(),
    p_username: $("[name='p_username']").val()
}
fields[thisName] = thisValue;

次に、呼び出しで次のように使用fieldsします$.ajaxdata: fields

于 2012-05-17T06:48:34.780 に答える
0

おそらくそれほどエレガントではありませんが:

function makeObj (a) {
  if (!(a instanceof Array))
    throw ('Attempt to build object from ' + (typeof a));
  if (a.length % 2)  
    throw ('Attempt to build object from an array length ' + a.length);

  for (var o = {}, i = a.length - 1; i > 0; i -= 2) {
    console.log (a[i-1], a[i]); 
    o[a[i - 1]] = a[i];
  }  
  return o;
}

var thisName = 'Hans PUFAL';
var thisValue = 'Paleoinformaticien';
var session_id = '123edrft456fg';

var o = makeObj (['p_session_id', session_id,
              'p_username', 'HBP',
              thisName, thisValue]);

ここから入手可能: http://jsfiddle.net/jstoolsmith/bZtpQ

于 2012-05-17T17:32:34.270 に答える