((x.event.special[o.origType] || {}).handle || o.handler).apply is not a function

学习了ajax后,我尝试使用jQuery配合ajax实践,在实践过程中发现了这个问题。

错误情况

<script>
    $(function () {
        $("#input").keyup(
            $.ajax({
                url: '${pageContext.request.contextPath}/Test',
                data: { 'name': $("#input").val() },
                success: function (result) {
                    $("#result").html(result)
                }
            })
        )
    })
</script>

在错误情况中,我直接向keyup()中传入了$.ajax()

寻找原因

在百度上查找原因,发现了一个可能的答案:
Jquery报错:Uncaught TypeError: ((m.event.special[e.origType] || (intermediate value)).handle || e.handler).apply is not a function
原因:绑定了有的事件,但是还没有写那些函数的,也就是绑定的函数找不到导致的问题。

解决方案

<script>
    $(function () {
        $("#input").keyup(
            function () {
                $.ajax({
                    url: '${pageContext.request.contextPath}/Test',
                    data: { 'name': $("#input").val() },
                    success: function (result) {
                        $("#result").html(result)
                    }
                })
            }
        )
    })
</script>

将$.ajax()用匿名函数包裹起来后传入。

反思

  1. 还要继续查明错误的原因。
  2. 要适应javaScript中的匿名函数,直到能够灵活运用。

重新寻找错误原因

在与学长的分析交流中,我得知错误的真正原因为$.ajax()实则是对象(或者称为构造函数),而keyup()接收的是一个函数参数,因此会报错。

重新生成解决方案

与原来的方法相同,在$.ajax()外面包裹一层匿名函数即可。

重新反思

  1. 对JavaScript的学习不够深入,要继续学习JavaScript对象的内容。
  2. 学会查看Ajax和JavaScript源码,自己分析错误原因。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值