【问题标题】:Uncaught TypeError: $.ajax(...).error is not a function未捕获的 TypeError:$.ajax(...).error 不是函数
【发布时间】:2017-12-26 06:45:24
【问题描述】:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>jquery examples - 4</title>
	<link rel="stylesheet" type="text/css" href="css/style2.css">
</head>
<body>

<input id="name" type="text" name="">
<input id="button" type="button" value="load" name="">
<div id="content"></div>
<script type="text/javascript" src="js/jQuery.js"></script>
<script type="text/javascript" src="js/selectors12.js"></script>

</body>
</html>

$('#button').click(function() { 
var name = $('#name').val();

				$.ajax({
					url:'php/page.php',
					data: 'name='+name, //sending the data to page.php
					success: function(data) {  
						$('#content').html(data);

					}
					
				}).error(function() { 
					alert('an error occured');

				}).success(function() { 
					/*alert*/
					alert('an error occured');
				}).complete(function() { 
					/*alert*/
				});
});

error() 不起作用,当我将 URL: 更改为 page.php 并使用不正确的扩展名检查 error() 并显示它时。

但是,在控制台中它会显示一条错误消息:

未捕获的 TypeError:$.ajax(...).error 不是函数

【问题讨论】:

  • 确保您已正确包含 jQuery 库。
  • jQuery 库可能丢失
  • 添加一个功能性的sn-p

标签: javascript jquery html ajax


【解决方案1】:

从 3.0 版开始,jQuery 将 error() 替换为 fail() 用于链式 promise 调用。所以你应该使用

$.ajax({ 
    .... 
}).done(function(resp){
    //do something when ok
}).fail(function(err) {
    //do something when something is wrong
}).always(function() {
   //do  something whether request is ok or fail
});

来自jQuery Ajax documentation

弃用通知:jqXHR.success()、jqXHR.error() 和 jqXHR.complete() 回调从 jQuery 3.0 开始被删除。您可以改用 jqXHR.done()、jqXHR.fail() 和 jqXHR.always()。

【讨论】:

    【解决方案2】:

    也许您正在使用没有 ajax 功能的精简版 jquery。尝试从link下载常规的

    【讨论】:

    • 那是我的问题。
    【解决方案3】:

    你需要在这里做两件事。

    首先使用下面的代码确保 Ajax 存在于您的 Jquery 文件中。

    <script>
        $(document).ready(function() {
          console.log($.ajax);
        });
      </script>
    

    如果这打印错误,那么您没有 Ajax。在这种情况下,请将您的 jquery 更改为指向 CDN,例如 https://code.jquery.com/jquery-2.2.4.min.js

    其次将您的 Ajax 函数更改为以下。这里我修改了error和complete函数,去掉了重复的success函数。

    $.ajax({
        url:'php/page.php',
        data: 'name='+name, //sending the data to page.php
        success: function(data) {  
            $('#content').html(data);
        }, error : function(e) { 
            alert('an error occured');
        }, complete : function() { 
            /*alert*/
        }
    });
    

    【讨论】:

    • 我知道这是一个旧答案,但如果你能回答我,我将不胜感激。我试过这个console.log($.ajax); 它没有打印错误,但它打印未定义!
    【解决方案4】:

    您正在使用 jQuery 的精简版。它不支持 ajax 调用。使用以下cdn

    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>jquery examples - 4</title>
        <link rel="stylesheet" type="text/css" href="css/style2.css">
    
    
    </head>
    <body>
    
    
    <input id="name" type="text" name=""> <input id="button" type="button" value="load" name="">
    
    
            <div id="content"></div>
    
        <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
        <script type="text/javascript" src="js/selectors12.js"></script>
    
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-15
      • 2020-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      相关资源
      最近更新 更多