$.ajax里面success函数的this指向谁
时间: 2023-08-13 17:08:12 浏览: 103
在 `$.ajax` 中的 `success` 函数中,`this` 关键字默认指向调用该函数的对象。通常情况下,它指向 `jqXHR` 对象,即 jQuery AJAX 请求返回的对象。这个对象包含了关于请求的相关信息和响应数据。你可以使用 `this` 来访问这些信息。例如,你可以通过 `this.responseText` 来获取响应的文本数据。但是需要注意的是,在使用箭头函数时,`this` 的指向会发生改变,它将指向定义该函数的上下文对象。
相关问题
解释代码: <script> $('.star').click(function () { var hid = $(this).attr('hid') $.ajax({ url: '{% url "star" %}', dataType: 'json', method: 'post', data: { 'hid': hid }, success: function (data) { alert(data.msg) location.reload() } }); }) $('.see').click(function () { var hid = $(this).attr('hid') $.ajax({ url: '{% url "see" %}', dataType: 'json', method: 'post', data: { 'hid': hid }, }); }) </script>
这段代码使用了jQuery库,并注册了两个事件处理函数。第一个事件处理函数是当类名为"star"的元素被点击时执行,它会获取该元素的"hid"属性值,然后使用jQuery的ajax方法向指定的URL发送POST请求,并将hid作为请求参数。请求成功时,弹出一个消息框显示返回的数据msg,并重新加载页面。第二个事件处理函数是当类名为"see"的元素被点击时执行,它也会获取该元素的"hid"属性值,并使用jQuery的ajax方法向指定的URL发送POST请求,并将hid作为请求参数。但是在请求成功后,它没有执行任何操作。在这段代码中,{% url "star" %}和{% url "see" %}是Django模板语言中的语法,用于生成指向视图函数的URL。
$(this).datagrid("beginEdit", index); var url = "/manage/platform/commodity/baseCommodityModelCp/getConfigInfoList?commodityId="+rows[index].commodityId; $.ajax({ url: url, async: false, //同步请求 dataType: "json", success: function(data){ var configTarget= $(this).datagrid("getEditor",{index:index,field:"commodityConfig"}).target; configTarget.combobox('loadData', data); } }); $(this).datagrid("endEdit", index); editor关闭后在打开下拉款无值
根据你提供的代码,我认为问题可能是因为在editor关闭后,下拉框的数据源被清空了。这是因为当editor关闭时,datagrid会自动清空editor所在单元格的内容。因此,你需要在重新打开editor时重新设置下拉框的数据源。
以下是一个可能的解决方案:
```
$(this).datagrid({
onBeforeEdit:function(index,row){
var url = "/manage/platform/commodity/baseCommodityModelCp/getConfigInfoList?commodityId="+row.commodityId;
$.ajax({
url: url,
async: false,
dataType: "json",
success: function(data){
var editor = $(this).datagrid("getEditor",{index:index,field:"commodityConfig"});
$(editor.target).combobox('loadData', data);
}
});
}
});
```
在这个解决方案中,我使用了datagrid的onBeforeEdit事件,并在事件中重新设置了下拉框的数据源。当你重新打开editor时,onBeforeEdit事件会被触发,然后重新获取数据并设置下拉框的数据源。
请注意,在这个解决方案中,我使用了editor.target来获取下拉框的DOM元素。这是因为在事件处理程序函数中,this指向了datagrid对象,而不是editor对象。因此,我们需要使用editor.target来获取下拉框的DOM元素。
阅读全文