Javascript jqueryajax没有执行成功

Javascript jqueryajax没有执行成功,javascript,jquery,html,ajax,dom,Javascript,Jquery,Html,Ajax,Dom,我正在通过ajax发送请求,以便在数据库中插入数据。成功提交后,我的按钮消息未更改。在按下时,我会触发消息请稍候…当成功触发时,设置新的html值完成。成功创建了数据库中的记录,但未更改“完成”的按钮文本 我的剧本: var Friend = { // Add new friend add: function() { var btn = $(".btn-add-friend"); btn.click(function() {

我正在通过ajax发送请求,以便在数据库中插入数据。成功提交后,我的按钮消息未更改。在按下时,我会触发消息
请稍候…
当成功触发时,设置新的html值
完成
。成功创建了数据库中的记录,但未更改“完成”的按钮文本

我的剧本:

var Friend = {

    // Add new friend
    add: function() {
        var btn = $(".btn-add-friend");

        btn.click(function() {

            $(this).html("Please wait...");

            $.ajax({
                type: "post",
                url: baseurl + "/FriendRequest/send",
                data: {
                    friend: $(this).data('friend')
                },

                success: function(xhr, status) {
                    $(this).html("Done"); // Not wortk

                    alert("done"); // <-- Work 
                },
                error: function(response, s, e) {
                    alert(response.responseText);
                },
                complete: function () {
                     //. the some from success
                }
            });
        });
      },

    // Initialise
    init: function() {
        Friend.add();
    }
};
var-Friend={
//添加新朋友
添加:函数(){
var btn=$(“.btn添加朋友”);
点击(函数(){
$(this.html(“请稍候…”);
$.ajax({
类型:“post”,
url:baseurl+“/FriendRequest/send”,
数据:{
friend:$(this.data('friend'))
},
成功:功能(xhr,状态){
$(this.html(“Done”);//不是wortk

警报(“完成”);//
在ajax函数回调中是…ajax调用,而不是单击的元素。
你必须用它来替换它

add: function() {
    var btn = $(".btn-add-friend");

    btn.click(function() {

        var self = $(this);

        self.html("Please wait...");

        $.ajax({
            type: "post",
            url: baseurl + "/FriendRequest/send",
            data: {
                friend: self.data('friend')
            },
            success: function(xhr, status) {
                self.html("Done");
            },

要使用
,您需要附加属性。使用
url添加以下内容

context:this
因此,更新后的代码将

$.ajax({
            type: "post",
            url: baseurl + "/FriendRequest/send",
            context:this,
            data: {
                friend: $(this).data('friend')
            },

            success: function(xhr, status) {
                $(this).html("Done"); // Will work

                alert("done"); // <-- Work 
            },
            error: function(response, s, e) {
                alert(response.responseText);
            },
            complete: function () {
                 //. the some from success
            }
        });
$.ajax({
类型:“post”,
url:baseurl+“/FriendRequest/send”,
背景:这,,
数据:{
friend:$(this.data('friend'))
},
成功:功能(xhr,状态){
$(this.html(“Done”);//可以使用

alert(“done”);//在回调中,这指的是Ajax调用的
jqXHR
对象,而不是元素。因此,请尝试在Ajax请求之前将其分配给变量,然后在success函数中使用此变量:

//Before ajax request
var _this = $(this);

//Inside success function
_this.html("Done");

希望这有帮助。

在将变量
baseurl
传递到
url
之前,检查变量
baseurl是否有一些值。baseurl并没有问题,它只是控制器的url,在单击成功插入数据库的所有数据后。我正在循环朋友列表表单db,有100个用户使用“some”按钮。若我设置
btn.html(“完成”)
我将所有按钮更改为“完成”:(为此,我只需要指向一个按钮您需要一个变量来保存
这个
值,EditdRight….感谢现在的工作。因此,下次我需要定义变量时,它将保存
这个
谢谢。每个函数通常都有自己的
这个
值,所以当
这个
在单击函数中时,是clicked元素,与ajax函数相同,
这个
成功
函数中是ajax调用,而不是元素。是的,我现在明白了,你节省了我很多时间。再次感谢
//Before ajax request
var _this = $(this);

//Inside success function
_this.html("Done");