POST后无法在JQuery中调用“done”函数

时间:2014-01-03 17:15:05

标签: jquery typescript

我有一个也使用JQuery的Typescript项目。它使用JQuery Form Plugin(http://malsup.com/jquery/form/)上传包含文件的表单。

上传后,它应该从JQueryDeferred调用“完成”函数,它无法做到。浏览器向它抛出错误。

我使用的是Definitely Typed:https://github.com/borisyankov/DefinitelyTyped/blob/master/jquery/jquery.d.ts

中的Typescript定义

这是我的代码:

this.JQuerySelector().ajaxSubmit().done(function (data) {
            var x = data;
            alert("Success : " + x);
        }).fail(function (data) {
                var x = data;
                alert("Error : " + x);
            });

函数ajaxSubmit属于“JQuery Form插件”,其中提供了typescript定义:

interface JQuery
{
    ajaxSubmit(arg:{error:any; success:any}): JQuery;
    ajaxSubmit(): JQueryDeferred<JQuery>;
    ajaxForm(): JQuery;
}

我自己创建了这个部分定义,但我不确定它是否准确。我在浏览器控制台上看到的错误是:

  

未捕获TypeError:对象[object Object]没有方法'done'   DivAndSpan.ts:243 FileUploader.startUpload DivAndSpan.ts:243   (匿名函数)Start.ts:50 x.event.dispatch jquery.js:5095   v.handle jquery.js:4766

文件成功发布但未收到POST响应,并且未调用“完成”功能。

1 个答案:

答案 0 :(得分:0)

ajaxSubmit不返回自定义类型,它使用成功函数details here

确实说

  

您可以将任何标准的$ .ajax选项传递给ajaxSubmit

但我的猜测是,这是在对标准ajax方法进行的默认对象更改之前,因此您将不得不这样做:

this.JQuerySelector().ajaxSubmit(success: function (data) {
            var x = data;
            alert("Success : " + x);
        },
       error:function (data) {
                var x = data;
                alert("Error : " + x);
            });