未捕获的TypeError:无法读取未定义的属性“abort”

时间:2012-09-07 06:29:21

标签: javascript jquery ajax jquery-ui jquery-ui-dialog

我的代码有问题,按钮在jQuery UI对话框中调用此ajax请求

myaudioupload = $.ajax({
        url: "some url",
        type: "POST",
        data: formdata,
        processData: false,
        contentType: false,
        success: function (data) {
        var data = jQuery.parseJSON(data);
        console.log('json parsed');
            if(data.status==1){
                console.log('status ok');
            }
            else{
                console.log('status not ok');
            }
        }
    });

如果用户想要取消请求,则用户关闭对话框,然后执行以下行:

close: function(event, ui) { 
    if(myaudioupload.abort()) {
        console.log('aborted');
        $('#uploadaudioform')[0].reset();
    }}

只有在上传数据时才能正常工作,而不是在上传成功之后或上传被触发之前。在这些情况下,此消息显示

  

未捕获的TypeError:无法调用未定义的方法'abort'

我甚至在中止时试过这些方法:

if(myaudioupload!=='undefined' && myaudioupload.abort=='function'){
                        myaudioupload.abort();
                        console.log('aborted');
                        $('#uploadaudioform')[0].reset();
                        }

但这也行不通;发生同样的错误。

所以,请帮助我如何做到这一点,或者我的代码中有什么问题。 感谢。

2 个答案:

答案 0 :(得分:3)

更改

myaudioupload!=='undefined'

typeof myaudioupload !== 'undefined'

答案 1 :(得分:1)

我认为myaudioupload.abort=='function'不是检查属性类型的正确方法,请使用

 typeof(myaudioupload.abort)  == 'function' instead.