您好我正在尝试将一些数据(我将Jquery.get()提取到另一个jquery.get)但是它会返回“未捕获的TypeError:非法调用”错误。 这是我正在使用的代码:
$.get("../charactersheet",{keyid: keyid, charid: charid} ,function(xml){
$.get("../getallskillfolders", {xmlcharactersheet: xml} , function(jsonallskillfolders){
alert("Firing the getallSkillFolders servlet");
console.log(jsonallskillfolders);
});
});
无论如何围绕这个以及它是由什么引起的?我起初认为这可能是因为第一个吸气剂还没有完成,但我的印象是该功能只有在完成之后才会被触发。
编辑:
jquery.min.js:4 Uncaught TypeError: Illegal invocation
n.param.e @ jquery.min.js:4
Ac @ jquery.min.js:4
Ac @ jquery.min.js:4
Ac @ jquery.min.js:4
n.param @ jquery.min.js:4
n.extend.ajax @ jquery.min.js:4
n.each.n.(anonymous function) @ jquery.min.js:4
(anonymous function) @ characterpage.js:183 = ($.get("../getallskillfolders", {xmlcharactersheet: xml} , function(jsonallskillfolders){
n.Callbacks.j @ jquery.min.js:2
n.Callbacks.k.fireWith @ jquery.min.js:2
x @ jquery.min.js:4
n.ajaxTransport.k.cors.a.crossDomain.send.b @ jquery.min.js:4
答案 0 :(得分:5)
在我看来,您正在尝试将XML文档传递到第二个get
。如果服务器为第一个get
返回的内容被标识为XML,jQuery会将它解析为XML文档并将其作为参数传递给success函数。
如果您不希望它这样做,您可以通过告诉jQuery响应是"text"
来覆盖该行为(响应数据类型是last argument到$.get
)) :
$.get("../charactersheet",{keyid: keyid, charid: charid} ,function(xml){
$.get("../getallskillfolders", {xmlcharactersheet: xml} , function(jsonallskillfolders){
alert("Firing the getallSkillFolders servlet");
console.log(jsonallskillfolders);
});
}, "text");
// ^^^^^^
或者这是$.ajax
版本(我的第一个答案的一部分,我从未注意到$.get
之前有第四个参数):
$.ajax({
type: "GET",
url: "../charactersheet",
dataType: "text",
data: {keyid: keyid, charid: charid},
success: function(xml){
$.get("../getallskillfolders", {xmlcharactersheet: xml} , function(jsonallskillfolders){
alert("Firing the getallSkillFolders servlet");
console.log(jsonallskillfolders);
});
}
});