出于某种原因,我无法在我的新类固醇项目中进行 AJAX 跨域调用。Weinre 不会显示它们,更不用说控制台中的任何 JS 错误。
我已经使用常规浏览器在 Apache 中测试了这段代码,并且调用成功,身份验证甚至可以正常工作。但是在 Ad-Hoc 模式下,什么都不会触发。
onclick
偶数触发是因为我收到了警报。我什至在 ajax 调用之前收到警报,但 ajax 根本不会触发。
var baseUrl = 'http://www.domain.com/form/apiv1/index.php/';
$(document).ready(function() {
$('#login').click(function () {
if($('#kairosid').val() <= '' || $('#kairosid').val() == '0') {
alert('Please enter an ID to continue');
return false;
} else {
alert('calling json');
$.ajax({
type: 'GET',
url: baseUrl+'phoneauth/'+$('#kairosid').val()+'?callback=?',
async: true,
dataType: 'jsonp',
jsonpCallback: 'processJSON',
crossDomain: true,
headers: {
"Authorization": "Basic " + btoa(lkey+':'+lhash)
},
success: function ( data ) {
alert('done');
if(data == 'null' || data <= '') {
alert('Sorry, there was a problem with the request');
} else {
alert('loading '+data);
hashes = data;
var fields = ["phoneNumbers", "name"];
navigator.contacts.find(fields, apiLoginSuc, apiLogError);
}
}
});
}
});
});
就像我说的,如果我将它转移到 Apache 并在那里运行,它运行得很好,调用 API 并完美地登录。
在我的 PHP 文件中,我将其放在顶部以确保:
header("Access-Control-Allow-Origin: *");
Weinre 中什么也没有出现:
但是,如果我从 URL 前面删除 HTTP,它当然可以工作。使用 HTTP 它不起作用。这里给了什么?
编辑: Weinre 日志:
2014-06-05T19:57:38.795Z 类固醇:
DOMNotify.childNodeInserted([4,83,{"id":116,"nodeType":1,"nodeName":"SCRIPT","localName":"script", "nodeValue":null,"childNodeCount":0,"attributes":["async","","src"," http://www.domain.com/form/apiv1/index.php/phoneauth/7 ?callback=processJSON&_=1401998264894 "]},null])