获取属性Jquery的值

时间:2012-04-11 17:23:16

标签: jquery jquery-ui

更新的问题:

$(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

END UPDATE

我正在尝试使用这样的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

2 个答案:

答案 0 :(得分: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中获取它,但是你正在显示函数的数据,那些完全是两个不同的事情。

答案 1 :(得分:0)

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

这样的Maby可以起作用。

var jsonData = jQuery.parseJson($(this)[0].data);  
var o = jsonData.EmployeeId;