1

我有以下代码来执行和显示 ajax 请求。在这里,我想将 ajax returened html 注入 mainCanvas。尝试上下文“ this”但不工作。你能分享一些想法吗?

我也不想将上下文设置为“ this.mainCanvas”,因为我还必须在其他元素中注入 html。

    var RequestController = {
            mainCanvas: $("#mainCanvas"),   
            panelCanvas: $("#subDiv"),
            Start:function(){
                $.ajax({
                    url: "http://myserverurl.com",
                    context: this,
                    success:function(data){
                        this.mainCanvas.html(data);
                    }
                });
            }
    };
4

3 回答 3

1

看来您正试图在渲染之前将 html 放入潜水中。始终在 DOM 完全加载时注入 html。您可以在$(document).ready()函数中检查这一点。

于 2013-04-22T14:03:08.883 回答
1

尝试这样的事情:

   created: function() {
    var vueInstance = this;
    $.ajax({
    url: urls.api.getStates,
    context: vueInstance,
    type: 'GET',
    success: function (response) {
        $.each(response, function (stateCodeId, name) {
            var stateObj = new Object();
            stateObj.id = stateCodeId;
            stateObj.name = name;
            vueInstance.states.push(stateObj);
        });
    },
    error: function (response) {
        console.log(response);
        $('#errorMsg').show();
        $("#errorMsg").focus();
        this.ErrorHeader = "Error(s)";
        this.ErrorMessage = "<li>An error occurred while retrieving the list of schools. Please try again later.</li>";
    }
})
}

刚刚花了半个小时来处理这个问题,我知道线程很旧,但我希望这对某人有所帮助!

于 2017-02-22T20:02:08.493 回答
0

使用jQuery.proxy

var RequestController = {
    mainCanvas : $("#mainCanvas"),
    panelCanvas : $("#subDiv"),
    Start : function() {
        $.ajax({
                    url : "http://myserverurl.com",
                    context : this,
                    success : $.proxy(function(data) {
                                this.mainCanvas.html(data);
                            }, this)
                });
    }
};
于 2013-04-22T09:41:33.837 回答