我仍然試圖弄清楚所有這一切,我遇到了一個非常奇怪的錯誤。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