我正在启动时在我的移动应用程序中进行jsonp调用以连接到我的服务器。我正在使用Phonegap 2.1和Zepto 1.0-rc1。在我的html页面的底部,我在DOM上做了初始化的东西。
<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)中,结果相同。已经检查过网址是否正确等。
有没有人见过这样的东西?
由于 史蒂夫
答案 0 :(得分:1)
因为您在第一次调用(未定义响应)时进入“成功”回调函数,您确定您的服务器正在响应第一次调用吗?听起来它正在返回200响应,但没有第一次调用的数据。
您可以尝试添加“错误”回调,以查看是否提供了有用的内容
$.ajaxJSONP({
url: 'http://localhost/isconnected',
success: function(response) {
console.log('response is ' + response);
}
error: function(response) {
console.log('error is ' + response);
}
});
最后,因为AJAX是异步的,所以你对 isConnected()的2次调用会立即触发另一次,而不是等待第一次响应。我很好奇它在服务器端的样子(见上文)。