$ .ajax包含在新的'get'函数中。
如果js文件中只有一个'get'调用,那很好。 但是行中的2个调用失败。
更精确, 第一次调用失败,出现“Uncaught ReferenceError:process not defined”, 第二个是成功的,但是在成功函数中它有第一个'get'调用的数据。
正如我猜测的那样,'this'/ context存在一些问题。你能解释一下吗?
(function() {
"use strict";
function get(url, success, error) {
$.ajax({
type: "GET",
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'process',
url: url,
success: success,
error: error
});
}
get('XXX',
function(data, textStatus, jqXHR) {
console.log("SUCCESS PING 1");
console.log(data);
},
function(jqXHR, textStatus, errorThrown) {
console.log("ERROR PIND 1");
});
get('YYY',
function(data, textStatus, jqXHR) {
console.log("SUCCESS PING 2");
console.log(data);
},
function(jqXHR, textStatus, errorThrown) {
console.log("ERROR PING 2");
});
})();
/*
===========================================
===============console=====================
===========================================
1. ERROR PIND WAR
2. Uncaught ReferenceError: process is not defined
at db?callback=process&_=1485184752755:1
3. SUCCESS PING DB
4. Object {data for first call here}
*/
答案 0 :(得分:0)
首先,它更好不指定自定义回调名称(' jsonpCallback'参数)
http://api.jquery.com/jQuery.ajax/
jsonpCallback类型:String或Function()指定回调函数 JSONP请求的名称。将使用此值代替 随机名称由jQuery自动生成。最好是让 jQuery生成一个唯一的名称,因为它可以更容易地管理 请求并提供回调和错误处理。你可能想要 如果要启用更好的浏览器缓存,请指定回调 GET请求。从jQuery 1.5开始,您也可以使用一个函数 设置,在这种情况下,jsonpCallback的值设置为return 该函数的价值。
问题是,jQuery在具有指定名称的window对象中创建全局函数,然后将其删除。 我没有设法全面了解jQuery库中发生的事情,但是 这个问题肯定是由于它试图调用刚被删除的函数引起的。
删除jsonpCallback参数解决问题