Я все еще пытаюсь выяснить все это, и я сталкиваюсь с действительно странной ошибкой.
Я использовал getJSON, но после поиска решений этой проблемы я обнаружил, что лучше попытатьсяиспользуйте функцию AJAX (для захвата ошибок -> который не запускается).
Используя точки останова в firebug, если я медленно прохожу бегущий код, он работает (в основном) нормально (просто нужно изменить некоторые координаты для лучшего рисования).Но если я позволю ему работать с нормальной скоростью, он попытается сделать обратный вызов до того, как будет возвращен объект json.Консоль Firebug говорит, что все работает нормально (код 200), но при проверке jobj внутри объекта / функции корабля она выглядит как «неопределенная или нулевая»
После точек останова вызовы ajax, похоже, собираются "ошибка ", а не" успех ".Но это не срабатывание оповещения ...
Кроме того, ответ занимает около 300-500 мс ... это нормально?или мне нужно найти лучший сервер?
Отредактированный код:
var init = (function(){
thisplayer = new player();
jQuery.ajax({type: "GET", url: "shipdata.php", processData: true, data: {shipid:1}, dataType: "json",
success: function(json) {
var pship = new ship(json);
player_ship = $.extend(thisplayer, pship);
starfield = new starfield();
for(var i = 0; i < player_ship.enemytotal; i++) {
$.ajax({
type: "GET",
url: "shipdata.php",
processData: true,
data: {shipid:Math.round((Math.random()*2+2))},
dataType: "json",
success: function(json) {
var enemy = new ship(json);
game.enemies.push(enemy);
},
error: function(x,y,z) {
// x.responseText should have what's wrong
alert(x.responseTest);
}
});
}
game.initialized = true;
},
error: function(x,y,z) {
// x.responseText should have what's wrong
alert(x.responseTest);
}
});
})
..............................
var ship = (function(json){
var self = this;
jobj = jQuery.parseJSON(json.responseText);
self.height = jobj.height;
self.width = jobj.width;
self.xinit = jobj.xinit;
self.yinit = jobj.yinit;
self.speed = jobj.speed;
self.weapons = jobj.weapons;
self.maxlasers = jobj.maxlasers;
self.imagesrc = jobj.imgurl;
self.lasers = [];
self.x = self.xinit;
self.y = self.yinit;
JSON отправляется в:
{"height":75,"width":50,"xinit":275,"yinit":525,"speed":3,"weapons":[1,2],"maxlasers":2,"imgurl":"images\/ship.png"}
Демонстрационная версия:
http://www.schennshome.net/medicalmmj/practice/index.html (Коддалеко не идеальный, я бегу через это, чтобы попытаться поймать различные ошибки перед анимацией, но не могу пройти через это.)