我有一些问题与ajax jquery调用。
function postSomeData() {
console.log("LOG: in f'n postSomeData");
$.ajax({
url:api_endpoint,
type:'POST',
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization","Basic " + auth_encoded);
},
data:some_data,
success:function(data){
console.log("derp");
},
error: function(jqXHR, statusText, errorThrown) {
console.log("herp");
}
});
}
这段代码应该每隔几分钟运行一次(编辑:日志语句按预期每分钟出现一次),但是从来没有执行过回调,服务器也从来没有注册请求。在ajax函数运行之前的代码和其他函数使用非常相似的格式也执行(唯一的区别是发送的数据),我无法确定为什么。
如果我尝试强制代码运行几次,我有时会得到这个错误:
TypeError: Result of expression 'obj' [null] is not an object.
注意:这是发生在jquery 1.7.1, jquery mobile 1.0, phonegap 1.1.0在ios 4.3模拟器。使用were .
完成调试。编辑: api_endpoint
是一个字符串,包含服务器的http地址(用于开发,我的计算机的IP地址)。
obj
不是我创建的对象,我创建的唯一对象是some_data
编辑2:
下面是'some_data'的内容
{"coords":{"latitude":43,"longitude":-79,"altitude":0,"accuracy":150,"heading":-1,"speed":0,"altitudeAccuracy":-1},"timestamp":13232}
您是否首先使用Firebug的Net选项卡来确认正在发出请求?也许你的URL不正确?尝试设置Ajax调用的timeout
,看看error
回调是否正常工作。
在黑暗中工作一点(参见我对这个问题的评论),但是如果api_endpoint
包含一个URL,它不是在相同的起源作为这个代码运行的页面,你可能会碰到同源策略限制 —我没有做过任何Phonegap编程,我不知道SOP是否或在多大程度上适用。这篇文章说Phonegap禁用了移动Safari上的SOP;我不知道它是否可以支持其他平台。