我有2个环境,Dev和QA,Dev没有HTTP,其中QA有HTTPS,我的代码从Google导入联系人。我打电话给ajax来获取联系人, 问题是在Dev中它工作正常,但在QA中它只是在导入时停止浏览器(尽管导入在后端运行并且数据正在数据库中保存)
我在控制台上没有任何内容,在Chrome的网络标签中,我看到没有收到回复。
以下是我的代码段的一部分。
$.ajax({
type: "GET",
url :"index.php?page=AJAX&action=importSocial",
data: {'import':importSource},
success: function(output) {
if(output=='multiple'){
}else if(output.indexOf("getFB") >0){
window.location = output;
//alert(output+output.length);
}else{
window.location = window.location.href;
}
}
});
默认情况下async是真的所以我没有触及它,有没有人可以帮助我,我猜它是由于HTTPS。
Async和javascript是必不可少的标签,Gmail API与它无关,P.S用于标签编辑器。
答案 0 :(得分:1)
尝试使用特定于HTTP的嗅探器,例如 Fiddler (http://www.telerik.com/fiddler) - 最初由 Eric Lawrence 撰写,然后由的 Telerik的 即可。 它是最好的(和免费)HTTP /网络数据包嗅探器之一。
观察客户端和服务器之间的流量。一般情况下,请确保针对此特定HTTPS连接(请求/响应)的TCP / IP一切正常 - 例如,确保存在TCP握手。
更具体地说,关于您的代码,请查找:
<强>客户端:强>
您的浏览器生成的成功HTTP请求 - (与Chrome(浏览器)网络面板交叉引用)具有正确的JSON有效负载。
(请参阅jQuery documentation),了解您在上面写的jQuery $.ajax()
调用应该是什么样子
确保相同的成功HTTP请求实际上使您的计算机与浏览器生成的方式相同
从服务器到达客户的任何类型的回复
contacts
API调用答案 1 :(得分:1)
你可以添加complete
/ failure
回调,因为其他答案就是这样(这应该告诉你究竟发生了什么):
$.ajax({
type: "GET",
url :"index.php?page=AJAX&action=importSocial",
data: {'import':importSource},
success: function(output) {
if(output=='multiple'){
//NOTHING?? IS THAT WHAT YOU MEANT TO DO HERE?
}
else{
if(output.indexOf("getFB") >0){
window.location = output;
//alert(output+output.length);
}
else{
window.location = window.location.href;
}
} //END: if(output=='multiple')
}, //END: `success`:
/*************************************************
* The following assumes jQuery 1.4.x
*------------------------------------------------
* <SUMMARY> jQuery 1.4.x `failure` callback function (3 params)</SUMMARY>
* <PARAM> jqXHR jqXHR: jQuery 1.4.x, XMLHttpRequest) object </PARAM>
* <PARAM> String textStatus:
* <VALUE> null: actual null (not a string) if $.ajax() request is successful)</VALUE>
* <VALUE> "timeout"</VALUE>
* <VALUE> "error"</VALUE>
* <VALUE> "abort"</VALUE>
* <VALUE> "parsererror"</VALUE>
* </PARAM>
* <PARAM> String errorThrown: HTTP error from Server</PARAM>
*************************************************/
failure: function(jqXHR, textStatus, errorThrown){
if(!textStatus){
console.err(
"PROBLEM: " +
"$.ajax() `failure` callback called: " +
"`textStatus` = `null` or *empty string*: " +
"apparently no $.ajax() request error occurred?"
); //END: console.err()
} //END: if
else {
console.err(
"$.ajax `failure` type \"(0)\"" +
"\n" +
"`HTTP Status` from Server: (1)" +
"\n" +
"`jqXHR object: (2)",
textStatus, // 1st replacement (0) - String: $.ajax() status code
errorThrown, // 2nd replacement (1) - String: HTTP status code
jqXHR // 3rd replacement (2) - object: jqXHR object
); //END: console.err()
} //END: else
}, //END: 'failure`:
/*************************************************
* The following assumes jQuery 1.4.x
*------------------------------------------------
* <SUMMARY>
* jQuery 1.4.x `complete` callback function (2 params).
* This function is called when the request finishes, i.e.
* after the `success` and `error` callbacks are executed.
* </SUMMARY>
* <PARAM> jqXHR jqXHR: jQuery 1.4.x, XMLHttpRequest) object </PARAM>
* <PARAM> String textStatus:
* <VALUE> "success" </VALUE>
* <VALUE> "notmodified" </VALUE>
* <VALUE> "nocontent" </VALUE>
* <VALUE> "error" </VALUE>
* <VALUE> "timeout" </VALUE>
* <VALUE> "abort" </VALUE>
* <VALUE> "parsererror" </VALUE>
* </PARAM>
*************************************************/
complete: function(jqXHR jqXHR, String textStatus ){
if(!textStatus){
console.err(
"PROBLEM: " +
"$.ajax() `complete` callback called: " +
"`textStatus` = `null` or *empty string*: " +
"apparently $.ajax() request didn't complete?"
); //END: console.err()
} //END: if
else {
console.err(
"$.ajax `complete` type: \"(0)\"" +
"\n" +
"`jqXHR object: (1)",
textStatus, // 1st replacement (0) - String: $.ajax() status code
jqXHR // 2nd replacement (1) - object: jqXHR object
); //END: console.err()
} //END: else
}, //END: 'complete'
}); //END: $.ajax()