1

更新された質問:

$(this).attr("EmployeeId", 'A42345'); 

 $.ajax({
       type: "POST",
       url: url,
       data: "{EmployeeId: '" + id + "'}",
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       success: function (response) {
      var obj = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;

      var o = obj[$(this).attr("EmployeeId")]; //<<<<undefined

更新を終了

私は次のようなDOM内でEmployeeIdを取得しようとしています:

var o = obj[$(this).attr("EmployeeId")];

しかし、取得undefined

デバッグすると、次のように表示されます。

$(this)[0].data

     data    "{EmployeeId: 'A42345'}"     

ここに私のソースコードがあります:

$.ajax({
           type: "POST",
           url: url,
           data: "{EmployeeId: '" + id + "'}",
           contentType: "application/json; charset=utf-8",
           dataType: "json",
      success: function (response) {
                  var obj = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;

                  var o = obj[$(this).attr("EmployeeId")]; //<<<<undefined
4

2 に答える 2

2

thisあなたが与えた例であなたの機能を参照しています。したがって、セレクターは何にも一致しません。

クリック ハンドラーまたはその他の種類のイベント ハンドラー内から ajax 関数を呼び出していると思います。

$(this) を最初の関数の変数に割り当て、成功のコールバックでその変数を参照します。

$(el).click(function() {
    var $this = $(this);
    $.ajax({
       type: "POST",
       url: url,
       data: "{EmployeeId: '" + id + "'}",
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       success: function (response) {
              var obj = (typeof response.d) == 'string' ? eval('(' + response.d + ')') : response.d;

              var o = obj[$this.attr("EmployeeId")]; //<<<<undefined
// rest of code...

ただし、コードをさらに投稿すると役立ちます..

渡していたデータにアクセスしようとしている可能性もあります。その場合は、json に解析するか、最初から文字列として渡さないでください。.attr は機能しません$(this)this関数を参照しています..

$(this)[0].data関数のデータです。これは属性を持たず、DOM 要素ではありません。

あなたはいくつかの不一致の機能を使用しています.あなたの意図が何であったかを正確に理解するのは難しいです.DOMから取得しようとしていると言いましたが、関数のデータを表示しています.これらは2つのまったく異なるものです.

于 2012-04-11T17:30:51.843 に答える
0

$(this)[0].data最初に to jsonのコンテンツを解析する必要があると思います。

このような何かがうまくいくかもしれません。

var jsonData = jQuery.parseJson($(this)[0].data);  
var o = jsonData.EmployeeId;
于 2012-04-11T17:34:47.353 に答える