2012-10-25 47 views
1

我在啓動時正在我的移動應用中執行jsonp調用以連接到我的服務器。我使用Phonegap 2.1和Zepto 1.0-rc1。在我的html頁面的底部,我做了DOM準備好的init東西。即使設備準備就緒,首先在Phonegap + Zepto上的ajax調用返回undefined

<script type="text/javascript"> 
if (!$) {$ = Zepto}; 
$(init); 
document.addEventListener('deviceready', Perksea.deviceReady); 
</script> 

...

function init() { 
    var router = new Backbone.Router(); 
    ... 
} 
function deviceReady() { 
    isConnected(); 
    isConnected(); 
} 
function isConnected() { 
    $.ajaxJSONP({ 
     url: 'http://localhost/isconnected', 
     success: function(response) { 
      console.log('response is ' + response); 
     } 
    }); 
} 

第一JSONP調用將打印 「的反應是不確定的」,但第二JSONP調用工作。我甚至嘗試將JSONP調用放在setTimeout(isConnected,5000)中,結果相同。已經檢查過的網址是否正確等。

有沒有人看過類似的東西?

感謝 史蒂夫

回答

1

,因爲你做了「成功」回調函數在第一次通話(其中反應是不確定的),你確定你的服務器是否正確響應第一個電話?聽起來就像它正在返回一個200響應,但沒有第一次調用的數據。

你可以嘗試添加一個「錯誤」的回調,看看是否能提供什麼,以及有用

$.ajaxJSONP({ 
    url: 'http://localhost/isconnected', 
    success: function(response) { 
     console.log('response is ' + response); 
    } 
    error: function(response) { 
     console.log('error is ' + response); 
    } 
}); 

最後,因爲AJAX是異步的,你2調用isConnected()要火一把緊接在另一個之後,不等待第一個迴應。我很好奇它在服務器端的樣子(見上文)。

相關問題