Jquery在$ .ajax上添加参数到函数

时间:2015-06-27 21:39:42

标签: javascript jquery html ajax arguments

如果ajax失败,我想返回我的按钮值。

此HTML(在PHP上):

<a href="javascript:void(0);" id="follow-topic" value="7">
    <button class="btn btn-xs btn-primary pull-right"><?php echo $_LANGS['forum']['follow']; ?></button>
</a>

这个JS(在PHP上):

    $("#follow-topic").click(function(event) {
        var topicid = $(this).attr('value');
        var button_follow_html = $(this).html();
        if ($(this).is("a[disabled]")){ return false; }
        $("#follow-topic button").html('<?php echo $_LANGS['system']['loading_button']; ?>');
        $(this).attr({ disabled: true});
        $.ajax({
            url: "",
            data: { follow_topic: topicid },
            type: "POST",
            success: function (data) {
                $("#follow-topic").html(data);
                $("#follow-topic").attr({ disabled: false});
            },
            error: function(data, button_follow_html) {
                handleRequestError(data);
                $("#follow-topic").attr({ disabled: false});
                $("#follow-topic").html(button_follow_html);
            }
        });
    });

我已将按钮值更改为$_LANGS['system']['loading_button'],但如果ajax失败或客户端丢失连接,我希望返回$_LANGS['forum']['follow']

此系统使用多种语言,如果ajax成功,按钮将被替换为后续按钮,因此我无法使用$("#follow-topic button").html('<?php echo $_LANGS['forum']['follow']; ?>');

抱歉我的英文,谢谢你

1 个答案:

答案 0 :(得分:1)

jQuery documentation开始,如果ajax调用失败,则调用error函数需要3个参数:

  

错误

     

类型:函数(jqXHR jqXHR,String textStatus,String errorThrown)

因此,您实际上已在此代码中的textStatus变量中收到button_follow_html个回复:

        error: function(data, button_follow_html) {
            handleRequestError(data);
            $("#follow-topic").attr({ disabled: false});
            $("#follow-topic").html(button_follow_html);
        }

参数是optionnal,所以你可以这样做:

        error: function(data) {
            handleRequestError(data);
            $("#follow-topic").attr({ disabled: false});
            $("#follow-topic").html(button_follow_html);
        }

button_follow_html不会被重新定义,并且仍然具有与ajax调用之前相同的值,因此您可以按原样使用它。