1
(function($)
{

    $.fn.makeAjaxPostCall = function(options)
        {
            var settings = $.extend( true,{}, $.fn.makeAjaxPostCall.defaults, options );
            $.ajax({
                type: 'POST',
                url:  settings.url,
                data:   settings.data,
                success: function(data, textStatus, xhr){
                    if (xhr.readyState === 4 && xhr.status === 0) {

                        alert('Network Error');
                    }
                    else {alert(data);
                        settings.callback.call(data);
                    }
                },
                error: function(xhr, textStatus, errorThrown) {
                    if (textStatus !== null) {
                        alert("error: " + textStatus);
                    } else if (errorThrown !== null) {
                        alert("exception: " + errorThrown.message);
                    }
                    else {
                        alert ("error");
                    }
                }
            });
        };
        $.fn.makeAjaxPostCall.defaults = {
            type : 'POST',
            url : '',
            data : {},
            obj : $(document),
            callback : function(data){}
        };

})(jQuery);

这是我的 ajax 函数。我称这个函数为

$(document).makeAjaxPostCall({
    type : 'POST',
    url : 'UpdateNodeStatus',
    data : {
        workshopid : 1,
        userid : 1001,
        level : 5,
        nodeid : 10,
        resolutionid : 1
    },
    callback : function(data){
        alert(data);
    }
});

发布后我从 servlet 返回“真”。

response.setContentType("text");
    PrintWriter pw = response.getWriter();
    pw.print(true);

我在“成功”中将数据作为“真”,但在回调中作为“未定义”。

如何将“数据”从“成功”传递到“回调”函数以在其中使用它?

4

1 回答 1

1

您可以在没有 .call 的情况下直接调用回调函数,如下所示

settings.callback(data);

或者,如果您想使用.callthenthis作为第一个参数发送到.call.

if (xhr.readyState === 4 && xhr.status === 0) {
   alert('Network Error');
}
else {
    alert(data);
    settings.callback.call(this, data);
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call

于 2013-09-20T12:02:02.917 回答