Javascript .ajax问题
$.ajax被包装到新的“get”函数中 若js文件中只有一个“get”调用,那个么就可以了。 但第2行中有2个呼叫失败 更确切地说, 第一次调用失败,出现“未捕获引用错误:未定义进程”, 第二个是成功的,但在success函数中它有第一个“get”调用的数据 正如我所猜测的,“this”与上下文之间存在一些问题。你能给我解释一下吗Javascript .ajax问题,javascript,jquery,ajax,this,jsonp,Javascript,Jquery,Ajax,This,Jsonp,$.ajax被包装到新的“get”函数中 若js文件中只有一个“get”调用,那个么就可以了。 但第2行中有2个呼叫失败 更确切地说, 第一次调用失败,出现“未捕获引用错误:未定义进程”, 第二个是成功的,但在success函数中它有第一个“get”调用的数据 正如我所猜测的,“this”与上下文之间存在一些问题。你能给我解释一下吗 (function() { "use strict"; function get(url, success, error)
(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}
*/
首先,最好不要指定自定义回调名称('jsonpCallback'参数) jsonpCallback类型:字符串或函数()指定回调函数 JSONP请求的名称。将使用此值而不是 jQuery自动生成的随机名称。最好是让别人来 jQuery将生成一个唯一的名称,因为它将使管理 请求并提供回调和错误处理。你可能想 当您希望启用更好的浏览器缓存时,请指定回调 获取请求。从jQuery1.5开始,您还可以为此使用函数 设置,在这种情况下,jsonpCallback的值设置为return 该函数的值 问题是,jQuery使用指定的名称在窗口对象中创建全局函数,然后将其删除。 我没有完全了解jQuery库中发生的事情,但是 这个问题肯定是因为它试图调用刚刚被删除的函数
删除jsonpCallback参数可解决问题也许您应该传入另一个jsonp回调。