更新的问题:
$(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
答案 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;