你好,我正试图发送一些数据,我通过jquery. get()获取另一个jquery。然而,它返回一个"未捕获的TypeError:非法调用"错误。下面是我使用的代码:
$.get("../charactersheet",{keyid: keyid, charid: charid} ,function(xml){
$.get("../getallskillfolders", {xmlcharactersheet: xml} , function(jsonallskillfolders){
alert("Firing the getallSkillFolders servlet");
console.log(jsonallskillfolders);
});
});
无论如何围绕这个和它是由什么引起的?一开始我认为这可能是因为第一个getter还没有完成,但是在我的印象中,函数应该只在完成后才被触发。
编辑: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
在我看来,您试图将XML文档传递到第二个get
。如果服务器返回的第一个get
标识为XML, jQuery将为您将其解析为XML文档,并将其作为参数传递给成功函数。
如果你不想让它这样做,你可以通过告诉jQuery响应是"text"
(响应数据类型是$.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);
});
}
});