我有一个也使用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响应,并且未调用“完成”功能。
答案 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);
});