如何保持上下文并从ajax响应中获取真实数据,并坚持我代码的当前结构?
例如: 在第二种情况下,我得到了正确的数据。 使用当前结构如何获得相同的结果? (第一个console.log)
var options = {
url: 'http://echo.jsontest.com/key/value'
};
function getJson(options) {
this.init(options);
}
$.extend(getJson.prototype, {
options: null,
init: function (options) {
this.options = options;
return $.get(this.options.url);
}
});
console.log('First:');
console.log(new getJson(options.url));
console.log('Second:');
console.log($.get(options.url));
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
答案 0 :(得分:0)
这是您使用代码的方式。您只需将options
传递给getJson
,而不传递options.url
。
您的init
函数返回一个Promise,因此您可以使用.then
和.done
处理结果。
var options = {
url: 'https://jsonplaceholder.typicode.com/todos/1'
};
function getJson(options) {
return this.init(options);
}
$.extend(getJson.prototype, {
options: null,
init: function (options) {
this.options = options;
return $.get(this.options.url);
}
});
$.when( new getJson(options) )
.then(function(data) {
console.log(data);
})
.fail(function(data, statusText) {
console.log(statusText)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>