2012-04-11 7 views
1

Обновленный Вопрос:Получить значение атрибута Jquery

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

я пытаюсь получить EmployeeID withitn в DOM-то вроде этого:

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 
+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

также, на несвязанной ноте, использование eval плохое. –

+1

и используйте === вместо == –

+1

и вместо сохранения «EmployeeId» в качестве атрибута, сотрейте его как атрибут данных .. например. '' и использовать .data ("employeeid") для доступа к нему. –

0

Я думаю, вам нужно разобрать содержание $(this)[0].data для json first.

Maby что-то вроде этого может работать.

var jsonData = jQuery.parseJson($(this)[0].data); 
var o = jsonData.EmployeeId; 
Смежные вопросы