【问题标题】:Javascript jquery - Uncaught TypeError: Illegal invocationJavascript jquery - 未捕获的类型错误:非法调用
【发布时间】:2018-04-17 11:20:31
【问题描述】:

我正在尝试通过发布一些用于登录的 xml 来测试登录 Web 服务,但它正在返回此错误:

未捕获的类型错误:非法调用

代码如下:

$(document).ready(function() {
  var data = $.parseXML("<authenticationDetail><userName>username</userName><password>passw</password></authenticationDetail>");
  var url = "http://127.0.0.1:8000/thelogin.ws";
   $.ajax({ 
        data: data,
        type: "POST", 
        contentType: "application/xml", 
        url: url,
        dataType: "xml",
        success: function(xml) { // callback called when data is received 
              alert("success to post");
        },
        error: function() { // callback called when error
              alert("fail to post");
        }
  });
});

我该如何解决这个问题?

【问题讨论】:

  • 在 sn-p 中添加最小复制以及错误在哪里触发。

标签: javascript jquery


【解决方案1】:

尝试改变:

var data = $.parseXML("<authenticationDetail><userName>username</userName><password>passw</password></authenticationDetail>");

收件人:

var data = "<authenticationDetail><userName>username</userName><password>passw</password></authenticationDetail>";

您发送的是 XML,而不是已解析的 XML。

【讨论】:

    【解决方案2】:

    您将dataType 设置为xml,但您正在执行$.parseXML 并发送已解析的XML(一个对象)。

    var data = $.parseXML("<authenticationDetail><userName>username</userName><password>passw</password></authenticationDetail>");
    

    data 是一个对象,不是有效的 XML 字符串。

    JQuery 需要未解析的 XML 字符串才能使此请求生效。

    所以只需省略 $.parseXML 部分,它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2019-04-29
      • 1970-01-01
      • 2017-06-16
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-24
      相关资源
      最近更新 更多