我仍然试图弄清楚所有这一切,我遇到了一个非常奇怪的错误。Jquery Ajax/getJSON Javascript问题
我正在使用getJSON,但在搜索这个问题的解决方案后,我发现最好尝试使用AJAX函数(用于错误捕获 - >哪个不是正在触发)。在萤火虫中使用断点,如果我慢慢地通过运行的代码,它的工作(大部分)很好(只需要改变一些坐标为更好的绘图)。但是如果我让它以正常速度运行,它会在返回json对象之前尝试执行回调。萤火虫控制台表示一切正常(代码200),但是当检查ship对象/函数内部的jobj时,它似乎是“未定义或为空”
在断点之后,ajax调用似乎会“出错”而不是“成功”。但它不是发射警报...
此外,响应需要300-500ms ....是正常的?还是我需要找到更好的服务器?
编辑代码:
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;
{"height":75,"width":50,"xinit":275,"yinit":525,"speed":3,"weapons":[1,2],"maxlasers":2,"imgurl":"images\/ship.png"}
现场演示:
JSON在发送(代码远没有完美,我试图通过它来试图捕捉动画之前的各种错误,但无法克服这个问题。)
ahhhhhhhhhhhhhhhhh谢谢!!!! – Schenn
我做到了这一点,我仍然得到同样的问题,它发送空函数的船功能..? – Schenn
aha,它将json解释为非字符串。价值弦乐。修复 – Schenn