AJAX帖子在尝试升级jQuery版本时显示错误

imb*_*ila 4 javascript ajax jquery

我有很多无线电元素,它们具有不同的名称和值。当我单击收音机时,它将通过AJAX方法发送到服务器。

AJAX方法:

$("input[type=radio]").click(function() {
    $.ajax({
        url: "http://localhost/myproject/ajax_url",
        type: "POST",
        data: $("#my-form").serialize(),
        dataType: JSON,
        success: function(){}
    });
});
Run Code Online (Sandbox Code Playgroud)

以前,我使用的是jQuery 2.2.4版,它可以正常工作,但是当我尝试使用jQuery 3.1.1版对其进行更改时,它显示了一个错误:

未捕获的TypeError:(o.dataType ||“ *”)。toLowerCase不是函数

我确定我在服务器上键入的内容没有错(因为我从未更改过服务器代码),该错误仅在尝试升级jQuery版本时显示。您的解决方案可能对我有很大帮助:)

Ada*_*zad 6

问题在于JSONMDN

JSON对象包含用于解析JavaScript对象表示法(JSON)并将值转换为JSON的方法。它不能被调用或构造,除了它的两个方法属性之外,它本身没有有趣的功能。

jQuery 2.xx

它修剪dataType,然后返回[Object JSON]优良的字符串类型--string。jQuery.trim节省了一天。

// Extract dataTypes list
s.dataTypes = jQuery.trim(s.dataType || "*").toLowerCase().match(rnotwhite) || [""];
// ------------------^^^^
Run Code Online (Sandbox Code Playgroud)

jQuery 3.xx

它们已删除,$.trim并且由于您传递JSON了已定义的内容(否则,OR运算符||将传递string *

// Extract dataTypes list
s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""];
Run Code Online (Sandbox Code Playgroud)

固定

JSON用引号,所以你的字符串,而不是一个对象。dataType接受字符串。

$.ajax({
        url: "http://localhost/myproject/ajax_url",
        type: "POST",
        data: $("#my-form").serialize(),
        dataType: 'json', // lowercase is always preferered though jQuery does it, too.
        success: function(){}
});
Run Code Online (Sandbox Code Playgroud)