jon*_*aze 0 javascript jquery object instance
我创建了一个javascript对象和一个函数来构建一个新的对象实例.我现在需要在我的页面上使用这个对象但是没有运气,我觉得我错过了一些东西.
JS包含文件
function MyObject() {
this.ID = 0;
this.Name = "";
}
function GetObject(param1, param2) {
//ajax call to get json string
$.ajax({ //leaving out details this part works
success: function(data) {
var jsonData = $.parseJSON(data.d);
var myObj = new MyObject();
myObj.ID = jsonData[0].ID;
myObj.Name = jsonData[0].Name;
return myObj;
});
}
Run Code Online (Sandbox Code Playgroud)
此调用工作正常,但是当我尝试访问我得到的页面上的数据时 undefined
页
<script type="text/javascript">
$(function() {
var o = GetObject(1, 2);
});
</script>
Run Code Online (Sandbox Code Playgroud)
通过将DOM对象传递给函数并将其分配到那里,我能够使它工作.
function GetObject(param1, param2, domObj) {
//ajax call to get json string
$.ajax({ //leaving out details this part works
success: function(data) {
var jsonData = $.parseJSON(data.d);
var myObj = new MyObject();
myObj.ID = jsonData[0].ID;
myObj.Name = jsonData[0].Name;
domObj.text(myObj);
});
}
Run Code Online (Sandbox Code Playgroud)
但是这对我的应用程序不起作用,因为我拉了很多对象,并且只想在页面上引用它们.我错过了什么?任何帮助是极大的赞赏.
只是辞职你GetObject这样:
function GetObject(param1, param2, callback) {
//ajax call to get json string
$.ajax({ //leaving out details this part works
success: function(data) {
var jsonData = $.parseJSON(data.d);
var myObj = new MyObject();
myObj.ID = jsonData[0].ID;
myObj.Name = jsonData[0].Name;
// pass myObj via callback function parameter
return callback( myObj );
});
}
Run Code Online (Sandbox Code Playgroud)
现在称它为:
$(function() {
var o = {};
GetObject(1, 2, function(response) {
o = response;
});
});
Run Code Online (Sandbox Code Playgroud)
因为,在ajax 函数执行之后GetObject有一个AJAX请求(异步进程)和对象success,所以你需要借助callback函数.