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 中获取它,但是你正在显示函数的数据,这是两个完全不同的东西。

于 2012-04-11T17:30:51.843 回答
0

我认为你必须先解析$(this)[0].data到 json 的内容。

也许这样的事情可以工作。

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