$.get()在另一个$.get()中

$.get() inside another $.get()

本文关键字:get 另一个      更新时间:2023-09-26

你好,我正试图发送一些数据,我通过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);
        });
    }
});