$ .get()在另一个$ .get()里面

时间:2015-05-21 17:00:34

标签: javascript jquery

您好我正在尝试将一些数据(我将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

1 个答案:

答案 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);
        });
    }
});